首页 > 其他 > 详细

练习题1

时间:2019-09-10 20:40:44      阅读:104      评论:0      收藏:0      [点我收藏+]

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

  

 

练习题1

原文:https://www.cnblogs.com/liyou555/p/11502678.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!