HDU1492-The number of divisors(约数) about Humble Numbers-数论(计数问题)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1492

题意:给出一个只包含质因数2,3,5,7的数,求其约数的个数
思路:如果n=p1^n1*p2^n2*...*pn^nn,其中p1,p2,...,pn表示质因数,n1,n2,...,nn表示相应质因数的指数,根据乘法原理,则约数的个数为(n1+1)(n2+1)...(nn+1)
#include<iostream>
#include<string>
#include<cstdio>
#include<cstring>
#include<map>
#include<queue>
#include<cmath>
#include<stack>
#include<set>
#include<vector>
#include<algorithm>
#define LL long long
#define inf 1<<29
#define s(a) scanf("%I64d",&a)
#define CL(a,b) memset(a,b,sizeof(a))
using namespace std;
const int N=200005;
__int64 n,m,a,b,c,d;
int main()
{
    while(s(n)&&n){
        a=1,b=1,c=1,d=1;
        while(n!=1&&n%2==0){a++,n/=2;}
        while(n!=1&&n%3==0){b++,n/=3;}
        while(n!=1&&n%5==0){c++,n/=5;}
        while(n!=1&&n%7==0){d++,n/=7;}
        printf("%I64d\n",a*b*c*d);
    }
    return 0;
}


 

你可能感兴趣的:(hdu1492,计数问题)