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 }
浙公网安备 33010602011771号