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;
}
原文:https://www.cnblogs.com/liyou555/p/11502678.html