您的位置:首页 > 其它

hdu 4627 The Unsolvable Problem【hdu2013多校3签到】

2013-07-30 20:59 519 查看

链接:

http://acm.hdu.edu.cn/showproblem.php?pid=4627


The Unsolvable Problem

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 243 Accepted Submission(s): 143



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 <= 109).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.

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

2013 Multi-University Training Contest 3

题意:

找最大的最小公倍数
给你一个数 N , a+b = N ,找最大的 lcm(a,b)

思路:

奇数的随便就看出来了,取一半就好了
偶数的,写个暴力程序,打下表也可以随便看出规律,取一半了
#include<stdio.h>
#include<math.h>
#include<algorithm>
using namespace std;

__int64 gcd(__int64 a, __int64 b)
{
return b == 0 ? a : gcd(b,a%b);
}

__int64 lcm(__int64 a, __int64 b){
return a/gcd(a,b)*b;
}

int main()
{
int T;
__int64 n;
scanf("%d", &T);
while(T--)
{
scanf("%I64d", &n);
__int64 a,b;
__int64 ans = 0,tmp1,tmp2;
if(n&1) ans = lcm(n/2,n/2+1);
else
{
if(n == 2) ans = 1;
else
{
__int64 c = n/2-1;
tmp1 = lcm(c,n-c);
tmp2 = lcm(c-1,(n-c+1));
ans = max(tmp1,tmp2);
}
}
printf("%I64d\n", ans);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: