hdu 4627 The Unsolvable Problem

来源:互联网 发布:知乎 天使投资人 编辑:程序博客网 时间:2024/05/29 18:33

题目链接:点击打开链接

题目大意:给予n,找到a+b =n,并且a,b最小公倍数尽量大

题目分析:从中间向向两边找。若n为奇数,n/2和n/2+1;若为偶数,分为两种情况:1.如果n/2为奇数,则n/2+2和n/2-2,如果n/2为偶数则n/2-1和n/2+1

注意边界就行了

#include<stdio.h>#include<algorithm>#include<stdlib.h>#include<iostream>using namespace std;int main(){    int t;    __int64 n,ans;    scanf("%d",&t);    while(t--)    {        scanf("%I64d",&n);        if(n==2)          ans=1;        else        {            if(n%2)            ans=(n/2)*(n/2+1);            else            {                n=n/2;                if(n%2)                  ans=(n-2)*(n+2);                else                  ans=(n-1)*(n+1);            }        }        printf("%I64d\n",ans);    }    return 0;}


原创粉丝点击