HDU 2715
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2715
POJ 2140
题目链接:http://poj.org/problem?id=2140
求连续自然数的和等n的方法数有多少种。
求和公式(1+n)*n==2*m所以近似的n*n<=2*m。n<=根号(2*m)枚举1-n的情况。
AC代码:
#include<stdio.h>
#include<math.h>
int main()
{
int n,i;
int m,c;
int x,y,count;
while(scanf("%d",&n)!=EOF)
{
count=0;
m=(int)sqrt(n*2.0);
for(i=1;i<=m;i++)
{
c=(2*n)/i;
x=(c+i-1)/2;
y=(c-i+1)/2;
if((x+y)*i==2*n)
count++;
}
printf("%d\n",count);
}
return 0;
}