坦然玲子  

 

Sum

时间限制:1000 ms  |  内存限制:65535 KB
难度:2
 
描述
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. 
 
输入
The input consists N test cases.
The only line of every test cases contains a positive integer S (0< S <= 100000) which represents the sum to be obtained.
A zero terminate the input.
The number of test cases is less than 100000.
输出
The output will contain the minimum number N for which the sum S can be obtained.
样例输入
3
12
0
样例输出
2
7
 

#include<math.h>
#include<cstdio>

int main()
{
  int n,i,j;

  while(scanf("%d",&n))
  {
     if(n==0)
   break;
     for(i=(int)sqrt(2*n)-1;  ; i++)

      if((i*(i+1)/2-n)%2==0 && i*(i+1)/2-n>=0 )
    goto loop;
 
     loop: printf("%d\n",i);
  }
  return 0;
}

 

posted on 2012-03-10 16:50  坦然玲子  阅读(219)  评论(0编辑  收藏  举报