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;
} 

 

 

 

 

posted on 2019-09-10 20:26  liyou555  阅读(179)  评论(0编辑  收藏  举报