POJ2140
取m为第一个数
组合个数 所组成的数
1 m
2 m m+1
3 m m+1 m+2
4 m m+1 m+2 m+3
5 m m+1 m+2 m+3 m+4
可以求m为:(2*n - t^2 + t)/(2*t) (t = 1,2,3...),只要求的m合法即可
#include <iostream>
using namespace std;
int main()
{
long n;
long cnt,count;
while(cin>>n)
{
count=1;
for(cnt=2;(2*n-cnt*cnt+cnt)>0&&(2*n-cnt*cnt+cnt)>=2*cnt;cnt++)
if((2*n-cnt*cnt+cnt)%(2*cnt)==0)
count++;
cout<<count<<endl;
}
return 0;
}


浙公网安备 33010602011771号