BZOJ 3209 花神的数论题
2017-01-31 20:08
267 查看
按位计算。
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define maxn 60 #define mod1 10000007 #define mod2 9988440 using namespace std; long long n,bit[maxn],ret=0,c[maxn][maxn]; void get_bit() { long long rt=n; while (rt) { bit[++ret]=rt&1; rt>>=1; } } void get_table() { c[0][0]=1; for (long long i=1;i<=50;i++) { c[i][0]=1; for (long long j=1;j<=i;j++) c[i][j]=(c[i-1][j-1]+c[i-1][j])%mod2; } } long long f_pow(long long x,long long y) { long long ans=1,base=x; while (y) { if (y&1) ans=(ans*base)%mod1; base=(base*base)%mod1; y>>=1; } return ans; } int main() { scanf("%lld",&n); get_bit();get_table(); long long ans=1,rets=0; for (long long i=ret;i>=1;i--) { if (!bit[i]) continue; for (long long j=0;j<=i-1;j++) { if ((!j) && (!rets)) continue; ans=(ans*f_pow(rets+j,c[i-1][j]))%mod1; } rets++; } ans=(ans*rets)%mod1; printf("%lld\n",ans); return 0; }
相关文章推荐
- Bzoj 3209 花神的数论题
- BZOJ3209: 花神的数论题
- bzoj 3209: 花神的数论题 && 喵哈哈村的秘境探险(四)
- bzoj 3209 花神的数论题
- [Bzoj3209]花神的数论题(数位dp)
- bzoj 3209: 花神的数论题 (数位DP)
- BZOJ 3209(花神的数论题-数位统计+1,被数据范围坑了)
- BZOJ 3209 花神的数论题 数位dp
- BZOJ 3209 花神的数论题 数位DP+数论
- 数据范围BZOJ 3209(花神的数论题-数位统计+1,被数据范围坑了)
- BZOJ3209 花神的数论题
- bzoj 3209 花神的数论题(数位dp)
- bzoj3209 花神的数论题
- [数位dp] bzoj 3209 花神的数论题
- [BZOJ3209]花神的数论题(数位dp)
- BZOJ3209:花神的数论题(数位dp)
- BZOJ 3209 花神的数论题
- BZOJ 3209 花神的数论题
- [BZOJ3209]花神的数论题
- bzoj3209 花神的数论题 数位DP