您的位置:首页 > 其它

uva 10025 - The ? 1 ? 2 ? ... ? n = k problem

2014-01-03 15:56 387 查看
这题乍看很难,其实一想就通了

只要1+。。+n>=k

这时候要填符号,就是 减去双倍的某个数

所以1+..n减去k必为偶数

#include<iostream>
#include<math.h>
using namespace std;
int main(){
int n;
cin>>n;
while(n--){
int k;
cin>>k;
if(k==0){
cout<<3<<endl<<endl;
continue;
}
if(k<0)
k=-k;
int l=(int)sqrt((double)(2*k));
for(int i=l;;i++){
if((i+1)*i>=2*k&&((i+1)*i/2-k)%2==0){
cout<<i<<endl;
break;
}
}
if(n>0)
cout<<endl;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: