• UVa 10025: The ? 1 ? 2 ? ... ? n = k problem


    这道题仔细思考后就可以得到比较快捷的解法,只要求出满足n*(n+1)/2 >= |k| ,且n*(n+1)/2-k为偶数的n就可以了。注意n==0时需要特殊判断。

    我的解题代码如下:

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <cmath>
    #include <cstdlib>
    #include <string>
    #include <algorithm>
    
    using namespace std;
    
    int main()
    {
    	long long T,K,k,n;
    	cin >> T;
    	while(T--)
    	{
    		cin >> K; if(K<0) k=-K; else k=K;
    		if(K==0) cout << 3 << endl;
    		else
    		{
    			double ans = (sqrt(1.0+8*k)-1)/2;
    			n=ceil(ans);
    			while((n*(n+1)/2-K)%2) n++;
    			cout << n << endl;
    		}
    		if(T) cout << endl;
    	}
    	return 0;
    }
    

    附上题目如下:

    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
    

     



  • 相关阅读:
    qwebchannel.js
    锚点
    ECharts
    基于html2canvas实现网页保存为图片及图片清晰度优化
    JS判断某变量是否为某数组中的一个值的3种方法
    .on()之selector——jQuery
    Loading——spin.js
    理解CSS3 transform中的Matrix(矩阵)
    IOS中修改图片的大小:修改分辨率和裁剪
    IOS版本被拒的经历
  • 原文地址:https://www.cnblogs.com/riskyer/p/3237015.html
Copyright © 2020-2023  润新知