Saturday 11 April 2009

POJ 2140


这题精妙得很,值得好好研究


/**
Mr lixiaoyi's algorithm
其实我还不知其所以然,无耻的AC了。
*/
#include<stdio.h>
//int main() {
// int s,n,x,c;
// scanf("%d",&x);
// for (s=c=n=0;s<=x;c+=(x-s)%n==0&&(x-s)/n!=0)
// s+=n++;
// printf("%d",c);
// return 0;
//}
s,n,x,c;main(){scanf("%d",&x);for(s=c=n=0;s<=x;c+=(x-s)%n==0&&(x-s)/n)s+=n++;printf("%d",c);}
//#include <stdio.h>
//int main(){
// int s,n,x,c=0;
// for(scanf("%d",&x),s=n=1;s<=x;++n){
// s+=n;
// if there is an integer 1 + Sqrt(1 + 4*n - 4*Power(n,2) - 8*x))/2. then ...
// if(n&1==1&&x%n==0)++c;
// else if((2*x)%n==0&&((2*x)/n)%2==1)++c;
// }
// printf("%d\n",c);
// return 0;
//}

No comments:

Post a Comment