Sum
Problem Description
Consider the natural numbers from 1 to N. By associating to each number a sign (+ or -) and calculating the value of this expression we obtain a sum S. The problem is to determine for a given sum S the minimum number N for which we can obtain S by associating signs for all numbers between 1 to N.
For a given S, find out the minimum value N in order to obtain S according to the conditions of the problem.
Input
The only line contains in the first line a positive integer S (0< S <= 100000) which represents the sum to be obtained.
Output
The output will contain the minimum number N for which the sum S can be obtained.
Sample Input
12
Sample Output
7
题目解释
输入一个数字,只用加减法,找到最少需要几个数字可以得到输入的数字
思路
第一种情况:
只用加法就可以得到输入的数字,如:10=1+2=3+4
第二种情况:
加减法混用,把累加的结果记作sum,要得到的数字为a,运算的次数为i
1+2+3+···+k+···+n=sum,当把k变为-时记1+2+3+···-k+···+n=sum1
可得sum1=sum-2k,所以sum-a一定是2的整数倍
AC代码
#include<iostream> using namespace std; int main() { int a; while(cin>>a) { int sum=0,i=0; while(++i) { sum+=i; if(a==sum||sum-a>0&&(sum-a)%2==0) { cout<<i<<endl; break; } } } return 0; }