zoukankan      html  css  js  c++  java
  • UVA The ? 1 ? 2 ? ... ? n = k problem

     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,使k=(-)1+(-)2+(-)3+(-)4+(-)5++++(-)n,求最小的n
    思路:S1=1+2+3+.....+n>=k,S2=1+2+3+...-x+...+n==k
           所以S1-S2=2x,所以只要有一个数导致S1和S2差为偶数就符合条件
           输出有空格,再次错了。
          数学真强大,这里完全体现
       
    #include<stdio.h>
    #include<stdlib.h>
    
    int main()
    {
        long long k,t;
        int n;
        int T,i;
        scanf("%d",&T);
        while(T--)
        {
            scanf("%lld",&k);
            k=abs(k);
            for(i=1;;i++)
            {
                t=i*(i+1)/2;
                if(t>=k) break;
            }
            n=i;
            while(1)
            {
               int xx=n*(n+1)/2-k;
               if(xx%2==0) break;
               n++;
            }
            printf("%d\n",n);
            if(T) printf("\n");
        }
        return 0;
    }
    

      

  • 相关阅读:
    HDU 5059 Help him
    HDU 5058 So easy
    HDU 5056 Boring count
    HDU 5055 Bob and math problem
    HDU 5054 Alice and Bob
    HDU 5019 Revenge of GCD
    HDU 5018 Revenge of Fibonacci
    HDU 1556 Color the ball
    CodeForces 702D Road to Post Office
    CodeForces 702C Cellular Network
  • 原文地址:https://www.cnblogs.com/zsboy/p/2660146.html
Copyright © 2011-2022 走看看