题目链接:
https://cn.vjudge.net/problem/ZOJ-3286
题目大意:
f(n)为n的因子个数
求出有多少个f(i)使得f(i) == f(n) && i < n
解题思路:
打表出因子个数,然后直接记录因子个数这个值出现次数,记录答案即可
1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 ll n, m; 5 const int maxn = 1e6 + 10; 6 int num[maxn];//记录因子数目 7 int tot[maxn];//记录因子数为i出现的次数 8 int ans[maxn]; 9 int main() 10 { 11 for(int i = 1; i < maxn; i++) 12 { 13 num[i]++; 14 for(int j = i * 2; j < maxn; j += i) 15 num[j]++; 16 } 17 for(int i = 1; i < maxn; i++) 18 ans[i] = tot[num[i]], tot[num[i]]++; 19 while(cin >> n) 20 cout<<ans[n]<<endl; 21 return 0; 22 }