题意很简单 求n 的因子的因子的个数首先对于任意一个数字 他的因子的个数等于将这个数字分解质因数后 每个质因数的次数加1 的乘积我们将n进行质因数分解之后 对于某个质因数p 假设他的最高次数为a 那么我们可以选择0次 1次2次3…… a次 对于每次选择 他的因子的个数就可以为次数加一 那么总的贡献就是 1234……a1 (a1)*(a2)/2;那么所有的质因数的总贡献乘积就是答案 也就是代码实现如下#include bits/stdc.h using namespace std; #define int long long const int mod1e77; const int N1e65; int qpow(int a,int b){ int ans1; for(;b;b1){ if(b1)ansans*a%mod; aa*a%mod; } return ans; } vectorintminp(N,0),primes; void sieve(int n){ minp.assign(n1,0); primes.clear(); for(int i2;in;i){ if(!minp[i]){ minp[i]i; primes.push_back(i); } for(auto p:primes){ if(i*pn)break; minp[i*p]p; if(pminp[i])break; } } } signed main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); sieve(N-4); int n; while(cinnn!0){ int ans1; for(auto p:primes){ if(pn)break; int cnt0; for(int jn;j;j/p)cntj/p; ans(ans*(cnt1)%mod*(cnt2)%mod)%mod *5000004%mod; } coutans\n; } return 0; }