Sum---poj1844(数学题)

题目链接:http://poj.org/problem?id=1844

题意:给一个整数n,求当n由1到k的连续整数加或减组成时的最小的k。

如果n全部由加法组成,那么k可以组成k(k+1)/2,设减掉的部分为s,则有k(k+1)/2-2s=n 所以当n-k(k+1)是偶数即可;

#include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
#define N 2100
#define INF 0x3f3f3f3f
#define met(a) memset(a, 0, sizeof(a))

int main()
{
    int n;
    while(scanf("%d", &n)!=EOF)
    {
        int sum=0;
        for(int i=1;;i++)
        {
            sum+=i;
            if(sum>=n && (sum-n)%2==0)
            {
                printf("%d
", i);
                break;
            }
        }
    }
    return 0;
}

  

原文地址:https://www.cnblogs.com/zhengguiping--9876/p/4961831.html