哈哈,这是我一遍A掉的题,当你发现了其中的规律,你就会发现这是一个十足的水题,
1+2+3+4,先求n!,当n!大于目标数时,判断n!- 目标数的结果是不是偶数,最好是等于目标数,
因为只有是偶数的时候,才能有?1?2?3……得到。因为开始的时候都是加,你如果把某一个数m前的+
变成-后,原数减小了2个m。这就是原理:
1+2+3+4,先求n!,当n!大于目标数时,判断n!- 目标数的结果是不是偶数,最好是等于目标数,
因为只有是偶数的时候,才能有?1?2?3……得到。因为开始的时候都是加,你如果把某一个数m前的+
变成-后,原数减小了2个m。这就是原理:
一开始我真的不自信,我找的这个规律是否正确,我试了几组数后,怯怯的交上了。结果就AC了
#include <iostream>
using namespace std;
int main ()
{
int n;
long long int num,sum;
cin>>n;
while(n--)
{
sum = 0;
cin>>num;
if(num<0)num *= (-1);
for(int i = 1; ; i++)
{
sum+=i;
if(sum == num)
{
cout<<i<<endl;
break;
}
else if(sum>num)
{
if((sum-num)%2==0)
{
cout<<i<<endl;
break;
}
}
}
if(n)cout<<endl;
}
return 0;
}