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;
}

posted on 2009-02-28 21:14  Xredman  阅读(298)  评论(0编辑  收藏  举报

导航