2016-07-21
UVA - 10025 The ? 1 ? 2 ? ... ? n = k problem
题目大意:输入 k,使得? 1 ? 2 ? ... ? n = k,其中 ? 为+ 或 -,求 n。
1+2+3+4,先求sum,当sum大于目标数k时,判断sum - k的结果是不是偶数,因为只有是偶数的时候,才能有?1?2?3……得到。因为开始的时候都是加,你如果把某一个数m前的+变成-后,原数减小了2个m。这就是原理。
注意:sum == k的时候也还死满足的。
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
int n;
cin >> n;
long long int sum,k;
while ( n-- ) {
sum = 0;
cin >> k;
if ( k < 0 )
k *= (-1);
for (int i = 1; ; i++) {
sum += i;
if ( sum == k ) {
cout << i << endl;
break;
}
if ( sum > k ) {
if ( (sum - k) % 2 == 0 ) {
cout << i << endl;
break;
}
}
}
if ( n )
cout << endl;
}
return 0;
}