题目分析:
0.知识点:约数个数
code:
#include#include #include using namespace std; const int N = 1000010; const int mod = 1e9 + 7; int primes[N], cnt; bool st[N]; //线性筛法 void init(int n) { for(int i = 2; i <= n; i ++) { if(!st[i]) primes[cnt ++] = i; for(int j = 0; primes[j] <= n / i; j ++) { st[primes[j] * i] = true; if(i % primes[j] == 0) break; } } } int main() { int n; cin >> n; init(n); int res = 1; //阶乘分解模板 for(int i = 0; i < cnt; i ++) { int p = primes[i]; int s = 0; for(int j = n; j ; j /= p) s += j / p; res = (long long)res * (2 * s + 1) % mod; } cout << res << endl; return 0; }
总结:
1.题目一旦有表达式,一定要化简。



