The Unsolvable Problem
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 314 Accepted Submission(s): 177
Problem Description
There are many unsolvable problem in the world.It could be about one or about zero.But this time it is about bigger number.
Given an integer n(2 <= n <= 10 9).We should find a pair of positive integer a, b so that a + b = n and [a, b] is as large as possible. [a, b] denote the least common multiplier of a, b.
Given an integer n(2 <= n <= 10 9).We should find a pair of positive integer a, b so that a + b = n and [a, b] is as large as possible. [a, b] denote the least common multiplier of a, b.
Input
The first line contains integer T(1<= T<= 10000),denote the number of the test cases.
For each test cases,the first line contains an integer n.
For each test cases,the first line contains an integer n.
Output
For each test cases,
print the maximum [a,b] in a line.
Sample Input
3 2 3 4
Sample Output
1 2 3
Source
Recommend
zhuyuanchen520
题意: 有一个数n, 求 满足a + b = n, 的a 与 b的最大的最小公倍数
思路: 暴力
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
//
const int V = 100 + 50;
const int MaxN = 500 + 5;
const int mod = 1000000000 + 7;
int T;
__int64 lcm(__int64 a, __int64 b) {
__int64 aa = a;
__int64 bb = b;
do {
__int64 r = a % b;
a = b;
b = r;
}while(b);
return aa * bb / a;
}
int main() {
int i, j;
scanf("%d", &T);
while(T--) {
__int64 n, ans;
ans = 0;
scanf("%I64d", &n);
for(i = 0; i <= 10 && n / 2 - i >= 1; ++i)
ans = max(ans, lcm(n / 2 - i, n - n / 2 + i));
printf("%I64d\n", ans);
}
}