http://acm.hdu.edu.cn/showproblem.php?pid=1492
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1780 Accepted Submission(s): 871
Now given a humble number, please write a program to calculate the number of divisors about this humble number.For examle, 4 is a humble,and it have 3 divisors(1,2,4);12 have 6 divisors.
#include<iostream> #include<cstdio> #include<cstring> using namespace std; int a[4]={2,3,5,7},b[4]; long long n; int main(){ //freopen("input.txt","r",stdin); while(~scanf("%I64d",&n) && n){ //在行电用%lld提交WA了。。。。。。。。。 for(int i=0;i<4;i++){ b[i]=0; while(n%a[i]==0){ b[i]++; n/=a[i]; } } int ans=(b[0]+1)*(b[1]+1)*(b[2]+1)*(b[3]+1); //乘法计数原理(想想排列组合,某个数选或者不选) printf("%d\n",ans); } return 0; }