hdu 4627 水数学题

最小公倍数最大,也就是尽量让2个数互质,所以把n除以2 从中间向两边找就够了,自己写几组数据就能发现规律。

注意longlong存

 

#include<cstdio>

#include<cstring>

#include<algorithm>

#include<iostream>

using namespace std;

int main()

{

    int cas;

    long long s,n;

    cin>>cas;

    while(cas--)

    {

        cin>>n;

        if(n==2) s=1;

        else

        {

            if(n&1)

            {

                n>>=1;

                s=n*(n+1);

            }

            else

            {

                n>>=1;

                s=(n&1)?(n-2)*(n+2):(n-1)*(n+1);

            }

        }

        cout<<s<<endl;

    }

    return 0;

}


 

 

你可能感兴趣的:(HDU)