您的位置:首页 > 其它

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

2016-07-20 21:21 423 查看
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: