@[MC方块人](/user/199330) ……您好棒啊
by FZzzz @ 2019-12-13 21:44:10
@[MC方块人](/user/199330) 是不是在您眼中什么东西只要一顿爆算算出来就可以啊?
by FZzzz @ 2019-12-13 21:44:47
@[MC方块人](/user/199330) 您可能不清楚 $1000!$ 是个什么级别的数 /cy
by yurzhang @ 2019-12-13 21:45:35
@[MC方块人](/user/199330) 哦,因数个数定理
by qbu666666 @ 2019-12-13 21:49:10
就是因数个数定理啊,分解1~1000的质因数,开个桶统计一下就完事了,好像n开到1e5也没问题?
by smarthehe @ 2019-12-13 21:55:23
@[_zzx_0826_](/user/182172)
by smarthehe @ 2019-12-13 21:56:33
@[smarthehe](/user/103732) 举个例子行吗?
by _zzx_0826_ @ 2019-12-13 22:17:14
比如求 6!
1 =
2 = $2^1$
3 = $3^1$
4 = $2^2$
5 = $5^1$
6 = $2^1 * 3^1$
总共是 $2^4 * 3^2 * 5^1$
因数个数定理 $(4+1)(2+1)(1+1)=30$
by smarthehe @ 2019-12-13 22:55:49
@[_zzx_0826_](/user/182172)
by smarthehe @ 2019-12-13 22:55:54
@[smarthehe](/user/103732) 那这份代码哪儿出问题了呢?
```cpp
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int mod = 1e9 + 7;
ll n,vis[1005];
ll ans;
int main()
{
scanf("%lld",&n);
for(int i=1;i<=n;i++)
{
int x = i;
for(int j=2;j * j <= i;j++)
{
while(x % j == 0)
{
vis[j]++;
x /= i;
}
}
if(x > 1)vis[x]++;
}
ans = 1;
for(int i=1;i<=1000;i++)
{
if(vis[i])ans = (ans * (vis[i] + 1)) % mod;
}
printf("%lld",ans % mod);
return 0;
}
```
by _zzx_0826_ @ 2019-12-14 09:14:59