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

这题乍看很难,其实一想就通了

只要1+。。+n>=k

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

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

 1 #include<iostream>
 2 #include<math.h>
 3 using namespace std;
 4 int main(){
 5     int n;
 6     cin>>n;
 7     while(n--){
 8         int k;
 9         cin>>k;
10         if(k==0){
11             cout<<3<<endl<<endl;
12             continue;
13         }
14         if(k<0)
15             k=-k;
16         int l=(int)sqrt((double)(2*k));
17         for(int i=l;;i++){
18             if((i+1)*i>=2*k&&((i+1)*i/2-k)%2==0){
19                 cout<<i<<endl;
20                 break;
21             }                
22         }
23         if(n>0)
24             cout<<endl;
25     }
26 }

 

posted on 2014-01-03 15:56  云在心  阅读(101)  评论(0)    收藏  举报

导航