Description

背景
众所周知,花神多年来凭借无边的神力狂虐各大 OJ、OI、CF、TC …… 当然也包括 CH 啦。
描述
话说花神这天又来讲课了。课后照例有超级难的神题啦…… 我等蒟蒻又遭殃了。
花神的题目是这样的
设 sum(i) 表示 i 的二进制表示中 1 的个数。给出一个正整数 N ,花神要问你
派(Sum(i)),也就是 sum(1)—sum(N) 的乘积。

Input

一个正整数 N。

Output

一个数,答案模 10000007 的值。

Sample Input

样例输入一
3

Sample Output

样例输出一
2

HINT

对于样例一,1*1*2=2;

数据范围与约定

对于 100% 的数据,N≤10^15

思路:数位dp,计算小于n并且sum(i)=k的i有多少个,设为u,则答案为pow(k,u),然后枚举k即可

#include<cstdio>

#include<iostream>

#include<cstring>

#include<map>

#define maxn 1000005

#define MOD 10000007

using namespace std;

long long num[maxn],h=0,dp[100][100][100][2];

long long dfs(long long pos,long long need,long long now,long long limit)

{

if(pos==0)return now==need;

int tmp=limit?num[pos]:1;

long long ans=0;

if(!limit&&dp[pos][need][now][limit]!=-1)

return dp[pos][need][now][limit];

for(int i=0;i<=tmp;i++)

{

ans=(ans+dfs(pos-1,need,now+i,limit&&(i==tmp)));

}

if (!limit)

dp[pos][need][now][limit]=ans;

return ans;

}

long long mpow(long long a,long long n)

{

long long ans=1;

a%=MOD;

while (n)

{

if (n%2) ans=(ans%MOD)*(a%MOD)%MOD;

n/=2;

a=(a%MOD)*(a%MOD)%MOD;

}

return ans;

}

int main()

{

long long n;

memset(dp,-1,sizeof(dp));

while(scanf("%lld",&n)!=EOF)

{

long long ans=1;h=0;

if(n==0){printf("0\n");continue;}

while(n>0){num[++h]=n&1;n>>=1;}

for(int i=1;i<=h;i++)

{

long long u=dfs(h,i,0,1);

long long v=mpow((long long)i,u%9988440+9988440);

ans=((ans%MOD)*(v%MOD))%MOD;

if(ans==6296768)

{

int zz=1;

}

}

printf("%lld\n",ans);

}

return 0;

}

最新文章

  1. Ixia测试仪的自动化
  2. html5拖拽
  3. GIT 在本地保存账户和密码
  4. [SSH 2] 以网站主页面浅谈Struts2配置
  5. TCP握手
  6. 语音识别之梅尔频谱倒数MFCC(Mel Frequency Cepstrum Coefficient)
  7. [译]使用Babel和Browserify创建你的ES6项目
  8. opencl 在vs2015上遇见的问题
  9. 【javascript 变量和作用域】
  10. 掌握下面常用函数,学php不再难
  11. 一场刺激的游戏——很文艺的山东省第四届ACM赛总结(菜鸟版)
  12. gdb常用调试命令
  13. LOJ2514 CEOI2011 Hotel 贪心
  14. layui在open弹出层回显,解决动态select数据回显问题
  15. XamarinSQLite教程添加测试数据
  16. Python 函数(默认参数)
  17. 【刷题】LOJ 6015 「网络流 24 题」星际转移
  18. 常用AT指令集 (转)
  19. geoserver 开发2
  20. 50、多线程创建的三种方式之实现Runnable接口

热门文章

  1. Yii2.0数据格式器
  2. mybatis insert、update 、delete默认返回值解释与如何设置返回表主键
  3. CDN加速静态文件服务器的访问
  4. java并发编程:Executor、Executors、ExecutorService
  5. CPP-基础:cout
  6. iBeacon技术
  7. mysqldump 备份导出数据排除某张表或多张表
  8. Life is short.,You need Python
  9. 【php】 php.ini文件位置解析
  10. uboot下include\autoconfig.mk分析