题解
- 首先,对于如果一个数是偶数,那么很显然是相邻的两个奇数的最小公倍数绝对是最大的
- 那么如果是偶数,可以用一半开始做,每次找到gcd(a,b)=1的就输出;不是的话,一个减一个加
代码
1 #include <cstdio>
2 #include <iostream>
3 using namespace std;
4 int t,n;
5 int gcd(int a, int b) { return !b?a:gcd(b,a%b); }
6 int main()
7 {
8 scanf("%d",&t);
9 while (t--)
10 {
11 scanf("%d",&n);
12 if (n==1) scanf("0
");
13 for (int i=n/2;i;i--)
14 if (gcd(i,n-i)==1)
15 {
16 printf("%lld
",1ll*i*(n-i));
17 break;
18 }
19 }
20 return 0;
21 }