bzoj 3209 数位DP+欧拉定理
2015-06-06 19:47
399 查看
枚举1的个数,统计有那么多1的数的个数
View Code
/************************************************************** Problem: 3209 User: idy002 Language: C++ Result: Accepted Time:0 ms Memory:844 kb ****************************************************************/ #include <cstdio> #define Mod 10000007 #define Phi 9988440 typedef long long dnt; dnt n; dnt dp[50][2][51]; int tb; void dodp() { for( tb=49; tb>=0; tb-- ) if( (n>>tb)&1 ) break; dp[tb][1][1] = 1; dp[tb][0][0] = 1; for( int b=tb-1; b>=0; b-- ) { for( int c=0; c<=tb-b+1; c++ ) { dp[b][1][c] = dp[b+1][1][c-((n>>b)&1)]; dp[b][0][c] = (dp[b+1][0][c] + dp[b+1][0][c-1]) % Phi; if( (n>>b)&1 ) dp[b][0][c] = (dp[b][0][c] + dp[b+1][1][c]) % Phi; } } } dnt mpow( dnt a, dnt b ) { dnt rt; for( rt=1; b; b>>=1,a=(a*a)%Mod ) if( b&1 ) rt=(rt*a)%Mod; return rt; } int main() { scanf( "%lld", &n ); dodp(); dnt ans = 1; for( int c=2; c<=tb+1; c++ ) ans = (ans * mpow(c,dp[0][1][c]+dp[0][0][c])) % Mod; printf( "%lld\n", ans ); }
View Code
相关文章推荐
- VTR-to-Bitstream 1 General Recognition
- JSON-RPC轻量级远程调用协议介绍及使用
- ACDREAM 05B Circle vs Triangle(DFS专场)
- C++ 一些容易忽略的基本点
- Mac OS 安装cocoapods出现SSL connection错误
- MongoDB Windows环境安装及配置
- MongoDB Windows环境安装及配置
- Calendar 类
- Perl中常见的特殊符号
- 图片不存在时显示一个默认的图片
- Data Flow ->> Script Component
- ubuntu使用
- python字典排序
- 网页开发之Cookie生命周期
- Struts1入门
- ACM练习 A Mathematical Curiosity
- Web 开发
- 加锁单例
- Calendar 类
- LeetCode Isomorphic Strings