Minimum Sum LCM (uva000091 + and Minimum LCM + reasoning), uva10791lcm
L-Minimum Sum LCMTime Limit:3000 MSMemory Limit:0 KB64bit IO Format:% Lld & % lluSubmit Status Practice ultraviolet A 10791
You are also welcome to come to my topic for questions on the WordPress 10791 page. Haha http://acm.hust.edu.cn/vjudge/contest/view.action? Cid = 77956 # overview
AC code:
1 #include<stdio.h> 2 #include<string.h> 3 #include<algorithm> 4 #include<math.h> 5 using namespace std; 6 #define LL long long 7 8 LL n,sum; 9 10 inline LL divisor(LL x)11 {12 int t=0,cnt;13 LL tp;14 for(int i=2; i<=sqrt(n); i++)15 {16 cnt=0;17 tp=1;18 if(x%i==0&&i!=n)19 {20 while(x)21 {22 if(x%i==0)23 {24 cnt++;25 x=x/i;26 tp=tp*i;27 }28 else {sum+=tp;break;}29 }30 t++;31 }32 if(!x) break;33 }34 if(x>1){sum+=x;t++;}35 // printf("sum=%lld\n",sum);36 return t;37 }38 39 int main()40 {41 42 int ca=1;43 while(scanf("%lld",&n),n)44 {45 sum=0;46 LL m=divisor(n);47 if(sum==0||m==1)sum=n+1;48 printf("Case %d: %lld\n",ca++,sum);49 }50 return 0;51 }
Timeout code:
1 # include <stdio. h> 2 # include <string. h> 3 # include <algorithm> 4 using namespace std; 5 # define LL long 6 7 LL n, sum; 8 9 inline LL divisor (LL x) 10 {11 int t = 0, cnt; 12 LL tp; 13 for (int I = 2; I <= x; I ++) // write, it times out ..... 14 {15 cnt = 0; 16 tp = 1; 17 if (x % I = 0 & I! = N) 18 {19 while (x) 20 {21 if (x % I = 0) 22 {23 cnt ++; 24 x = x/I; 25 tp = tp * I; 26} 27 else {sum + = tp; break;} 28} 29 t ++; 30} 31 if (! X) break; 32} 33 return t; 34} 35 36 int main () 37 {38 39 int ca = 1; 40 while (scanf ("% lld ", & n), n) 41 {42 sum = 0; 43 LL m = divisor (n); 44 if (sum = 0 | m = 1) sum = n + 1; 45 printf ("Case % d: % lld \ n", ca ++, sum); 46} 47 return 0; 48}