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\n", i);
break;
}
}
}
return 0;
}

浙公网安备 33010602011771号