1 条题解
-
0
#include<bits/stdc++.h> #define v(x,y) (n/((1<<(x))*((y)?3:1))) #define int long long using namespace std; const int N=1e6+5,mod=1e9+7; int n,m,f[21][2]; signed main(){ scanf("%lld",&n);m=log2(n); f[m][0]=1;if((1<<(m-1))*3<=n)f[m-1][1]=1; for(int i=2;i<=n;i++)for(int j=0;j<=m;j++) f[j][0]=(f[j][0]*(v(j,0)-i+1)+f[j+1][0]*(v(j,0)-v(j+1,0))+f[j][1]*(v(j,0)-v(j,1)))%mod, f[j][1]=(f[j][1]*(v(j,1)-i+1)+f[j+1][1]*(v(j,1)-v(j+1,1)))%mod; printf("%lld\n",f[0][0]); return 0; }
- 1
信息
- ID
- 6862
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者