HDU4627

 1 /*找规律,n是奇数那么就是n/2和n/2+1
 2 如果n是偶数,那就是两种情况n/2-1,和n/2-2两种,比较一下大小就可以
 3 思路来自:http://www.cnblogs.com/freezhan/
 4 */
 5 #include<stdio.h>
 6 #include<string.h>
 7 __int64 gcd(__int64 a,__int64 b)
 8 {
 9     if(b==0) return a;
10     return gcd(b,a%b);
11 }
12 __int64 LMC(__int64 a,__int64 b)
13 {
14     return a/gcd(a,b)*b;
15 }
16 __int64 max(__int64 a,__int64 b)
17 {
18     if(a>b) return a;
19     return b;
20 }
21 int main()
22 {
23     __int64 n;
24     int t;
25     scanf("%d",&t);
26     while(t--)
27     {
28         scanf("%I64d",&n);
29         __int64 ans,sum;
30         if(n%2) 
31         {
32              ans=LMC(n/2,n/2+1);
33         }
34         else
35         {
36             if(n==2) ans=1;
37             else
38             {
39                 ans=LMC(n/2-1,(n-n/2+1) );
40                 sum=LMC(n/2-2,(n-n/2+2) );
41                 ans=max(ans,sum);
42             }
43         }
44         printf("%I64d
",ans);
45     }
46     return 0;
47 }
原文地址:https://www.cnblogs.com/okboy/p/3226463.html