题意:1到n,前面填的符号为正号或负号,求当n最小时,等于K
思路:先将所有k当成是正数
从1+2+3.....+n = sum,当sum - k = 偶数时,n就为最小。因为当为偶数时,sum与k中对应的正数相互减去,而剩余的是k中负数的两倍,(sum中的数与k中的是相应的。)
例如题中的例子:- 1 + 2 + 3 + 4 + 5 + 6 - 7 = 12= k,1+2+3+4+5+6+7 = 28,28 - 12 = 16为偶数。
#include<stdio.h>
int main(){
int n;
scanf("%d", &n);
while (n--){
int m;
int sum = 0;
scanf("%d", &m);
if (m < 0)
m = (-1 * m);
for(int i = 1;i < 1000000000; i++){
sum += i;
if (sum >= m && (sum - m) % 2 == 0){
printf("%d\n", i);
break;
}
}
if (n)
printf("\n");
}
return 0;
}