UVA 10791 - Minimum Sum LCM(坑)

题目链接

不知道为什么,我用cin,cout就是过不了。。。改成scanf过了。。。

还是我居然理解错题意了,已经不能用看错了。。。至少两个数字,我理解成两个数字了,还写了个爆搜。。。

 1 #include <cstdio>

 2 #include <cstring>

 3 #include <string>

 4 #include <cmath>

 5 #include <ctime>

 6 #include <cstdlib>

 7 #include <iostream>

 8 using namespace std;

 9 #define LL long long

10 #define MOD 1000000007

11 int prim[1000001];

12 int o[1000001];

13 LL que[5001];

14 int main()

15 {

16     int cas = 1,i,j,num = 0,m;

17     LL n,temp;

18     for(i = 2;i <= 1000000;i ++)

19     {

20         if(!o[i])

21         {

22             prim[num++] = i;

23             for(j = i+i;j <= 1000000;j += i)

24             o[j] = 1;

25         }

26     }

27     while(scanf("%lld",&n)!=EOF)

28     {

29         if(!n) break;

30         printf("Case %d: ",cas++);

31         if(n == 1)

32         {

33             printf("2\n");

34             continue;

35         }

36         m = 0;

37         for(i = 0;i < num;i ++)

38         {

39             if(n == 1) break;

40             if(n%prim[i] == 0)

41             {

42                 temp = 1;

43                 while(n%prim[i] == 0)

44                 {

45                     temp *= prim[i];

46                     n /= prim[i];

47                 }

48                 que[m++] = temp;

49             }

50         }

51         if(n != 1)

52         que[m++] = n;

53         LL minz = 0;

54         if(m == 1)

55         {

56             printf("%lld\n",que[0]+1);

57             continue;

58         }

59         for(i = 0;i < m;i ++)

60         {

61             minz += que[i];

62         }

63         printf("%lld\n",minz);

64     }

65     return 0;

66 }

你可能感兴趣的:(ini)