题目链接:HDU - 1492
题意:给定一个数求其因子数(该因子必须要以2、3、5、7作为基础因子)。
思路:
数论基础题,参考博客:http://blog.sina.com.cn/u/2173517203 在此表示感谢!
求取幂次,然后每项加1互乘,以12为例,其可以分解为2*2*3,其中2^2与3^1,在12的各项因子中可以由2的0、1、2次方再乘上3的0、1次方得到,所以有2*3=6种情况。
代码:
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <vector>
#include <cmath>
#include <set>
#define E 2.71828
#define PI acos(-1.0)
using namespace std;
typedef long long ll;
const ll maxn=1000005;
ll n;
int a[]={2,3,5,7};
int b[]={1,1,1,1};
int main () {
ios::sync_with_stdio(false);
while(cin>>n&&n) {
for(int i=0;i<4;i++) {
while(n%a[i]==0) {
b[i]++;
n/=a[i];
}
}
cout<<b[0]*b[1]*b[2]*b[3]<<endl;
b[0]=b[1]=b[2]=b[3]=1;
}
return 0;
}