• UVA 10025 The ? 1 ? 2 ? ... ? n = k problem


    这题穷举举到大概N=210就很慢了,不过这个题没有让我们给出相应的式子,参考了几个文章,学习到了这种方法:每一次把一个加号改为减号的时候 此式子的值比原式减小了一个偶数,因此,我们只需要判断 1+2+...+k=S  S-N是不是偶数就可以了 。

    题目及AC代码如下:

     

     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

     1 #include<cstdio>
     2 #include<cstdlib>
     3 #include<cmath>
     4 int main(void)
     5 {
     6     int cases;
     7     scanf("%d", &cases);
     8     for (int i = 0; i < cases; i++)
     9     {
    10         int n;
    11         scanf("%d", &n);
    12         n = abs(n);
    13         int k = 1;
    14         while (1)
    15         {
    16             int S = (k + 1)*k / 2;
    17             if ((S - n) % 2==0 && S-n>=0) break;
    18             else k++;
    19         }
    20         printf("%d
    ", k);
    21         if (i < cases - 1) printf("
    ");
    22     }
    23 }
  • 相关阅读:
    现在不知道为什么安装pip包总是失败,只能用清华源
    linux 下 svn配置;以及多仓库配置
    谷歌浏览器安装json格式化插件
    RESTful API的理解
    mysql5.6 rpm安装配置
    linux,apache,php,mysql常用的查看版本信息的方法
    mysql允许别人通过ip访问本机mysql数据
    直接取PHP二维数组里面的值
    mysql优化
    self this
  • 原文地址:https://www.cnblogs.com/VOID-133/p/3579029.html
Copyright © 2020-2023  润新知