2013多校联合3 G The Unsolvable Problem(hdu 4627)

2013-07-30 20:35 388人阅读 评论(0) 收藏 举报

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): 230    Accepted Submission(s): 136

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.
标准签到题,先特判n==2的情况,否则若n为奇数,则答案显然是n/2 和 n/2+1,若n为偶数设n=2*k,若k为偶数,则答案为k-1,k+1,否则答案为k-2,k+2。
    1. #include <iostream>
    2. #include <string.h>
    3. #include <stdio.h>
    4. #include <algorithm>
    5. #define ll long long
    6. using namespace std;
    7. int main()
    8. {
    9. //freopen("dd.txt","r",stdin);
    10. ll n,ncase;
    11. cin>>ncase;
    12. while(ncase--)
    13. {
    14. cin>>n;
    15. if(n==2)
    16. cout<<1<<endl;
    17. else
    18. {
    19. if(n%2)
    20. cout<<(n/2)*(n-n/2)<<endl;
    21. else
    22. {
    23. if((n/2)%2==0)
    24. cout<<(n/2-1)*(n/2+1)<<endl;
    25. else
    26. cout<<(n/2-2)*(n/2+2)<<endl;
    27. }
    28. }
    29. }
    30. return 0;
    31. }
    32. 一开始用暴力,唉,挂了,但是为什么是这样呢,想了半天终于明白了。
上一篇:关于"996",我想说的 - 人在高潮享受成就,人在低潮享受人生


下一篇:C#浅析单例模式