现在的位置: 首页 > 综合 > 正文

UVA 10025 The ? 1 ? 2 ? … ? n = k problem

2014年09月05日 ⁄ 综合 ⁄ 共 1473字 ⁄ 字号 评论关闭

 The ? 1 ? 2 ? ... ? n = k problem 


The problem

Given the following formula, one can set operators '+' or '-' instead of each '?', in order to obtain a given k
? 1 ? 2 ? ... ? n = k

For example: to obtain k = 12 , the expression to be used will be:
- 1 + 2 + 3 + 4 + 5 + 6 - 7 = 12 
with n = 7

The Input

The first line is the number of test cases, followed by a blank line.

Each test case of the input contains integer k (0<=|k|<=1000000000).

Each test case will be separated by a single line.

The Output

For each test case, your program should print the minimal possible n (1<=n) to obtain k with the above formula.

Print a blank line between the outputs for two consecutive test cases.

Sample Input

2

12

-3646397

Sample Output

7

2701
分析知,对于输入k,所找的n值需满足以下条件:
1、n*(n+1)/2>=k
2、n*(n+1)/2-k的值为偶数
代码如下:
#include <stdio.h>
#include <math.h>
int main(void)
{
    int i,n,flag,k;
    
    scanf("%d",&n);
    while(n--)
    {
     scanf("%d",&k);
     if(k<0)
      k=-k;
     if(!k)
      printf("3\n");
     else
     {
      i=sqrt(2*k)-1;//考虑到 k==0 的情况!!! 
      while((i*(i+1)/2-k)%2||(i*(i+1)/2)<k)
       i++;
      printf("%d\n",i);
     }
      if(n)
       printf("\n");
    }
    return 0;
}

 The ? 1 ? 2 ? ... ? n = k problem 


The problem

Given the following formula, one can set operators '+' or '-' instead of each '?', in order to obtain a given k
? 1 ? 2 ? ... ? n = k

For example: to obtain k = 12 , the expression to be used will be:
- 1 + 2 + 3 + 4 + 5 + 6 - 7 = 12 
with n = 7

The Input

The first line is the number of test cases, followed by a blank line.

Each test case of the input contains integer k (0<=|k|<=1000000000).

Each test case will be separated by a single line.

The Output

For each test case, your program should print the minimal possible n (1<=n) to obtain k with the above formula.

Print a blank line between the outputs for two consecutive test cases.

Sample Input

2

12

-3646397

Sample Output

7

2701

抱歉!评论已关闭.