传送门
数位dpdpdp经典题。
题面已经暗示了我们按照二进制位来数位dpdpdp。
直接dpdpdp多少个数有111个111,222个111,333个111…,
然后快速幂算就行了。
于是我们枚举前几位跟nnn相同,后面比nnn小的方案数。
这个显然是可以用组合数算的。
注意nnn自己的也要算进贡献。
代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod=10000007;
ll n,C[65][65],ans=1,cnt[65];
int len,pre;
inline ll ksm(ll x,ll p){ll ret=1;for(;p;p>>=1,x=x*x%mod)if(p&1)ret=ret*x%mod;return ret;}
int main(){cin>>n;for(int i=0;i<=60;++i){C[i][0]=1;for(int j=1;j<=i;++j)C[i][j]=C[i-1][j-1]+C[i-1][j];}while((1ll<<len)<=n)++len;for(int i=len-1;~i;--i)if((n>>i)&1){for(int j=0;j+pre<=len;++j)cnt[j+pre]+=C[i][j];++pre;}++cnt[pre];for(int i=2;i<=60;++i)(ans*=ksm(i,cnt[i]))%=mod;cout<<ans;return 0;
}

转载于:https://www.cnblogs.com/ldxcaicai/p/10084807.html

2018.10.27 bzoj3209: 花神的数论题(数位dp)相关推荐

  1. bzoj3209 花神的数论题——数位dp

    题目大意: 花神的题目是这样的 设 sum(i) 表示 i 的二进制表示中 1 的个数.给出一个正整数 N ,花神要问你 派(Sum(i)),也就是 sum(1)-sum(N) 的乘积. 要对1000 ...

  2. bzoj 3209 花神的数论题 —— 数位DP

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3209 算是挺简单的数位DP吧,但还是花了好久才弄明白... 又参考了博客:https://b ...

  3. 数据范围BZOJ 3209(花神的数论题-数位统计+1,被数据范围坑了)

    PS:今天上午,非常郁闷,有很多简单基础的问题搞得我有些迷茫,哎,代码几天不写就忘.目前又不当COO,还是得用心记代码哦! 3209: 花神的数论题 Time Limit: 10 Sec Memory ...

  4. bzoj3209:3209: 花神的数论题

    觉得还是数位dp的那种解题形式但是没有认真的想,一下子就看题解.其实还是设置状态转移.一定要多思考啊 f[i][j]=f[i-1][j]+g[i-1][j] g[i][j]=f[i-1][j-1]+g ...

  5. [数位dp] bzoj 3209 花神的数论题

    [数位dp] bzoj 3209 花神的数论题 题意:中文题. 思路:和普通数位dp一样,这里转换成二进制,然后记录有几个一. 统计的时候乘起来就好了. 代码: #include"cstdl ...

  6. bzoj 3209: 花神的数论题 喵哈哈村的秘境探险(四)

    3209: 花神的数论题 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 2169  Solved: 1006 [Submit][Status][Di ...

  7. BZOJ3209(luogu 4317)花神的数论题题解

    题目 设 sum(i) 表示 i 的二进制表示中 1 的个数.给出一个正整数 N ,花神要问你 派(Sum(i)),也就是 sum(1)-sum(N) 的乘积(n<=1e15). 分析 好吧,一 ...

  8. 花神的数论题(这题...哎。数位dp咋就这么 not naive 呢)

    题意简介 没什么好说,就是让你求出 1 ~ n 之间每个数转化为二进制后 '1' 的个数,然后乘起来输出积 题目分析 emmmm.... 两种解法(同是 $O(\log^2 N)$ 的算法,组合数效率 ...

  9. bzoj 3209: 花神的数论题

    限于本人DP处于背包--水平,不组声(就是对神奇的数位DP,找出j个1的有多少个,然后j的多少个次方就行) 1 #include<bits/stdc++.h> 2 #define N 10 ...

最新文章

  1. php按每小时显示数据,mysql-PHP按某月统计每个小时生成的数据
  2. oracle em 界面乱码,oracle em 按钮乱码解决办法及em网页变成英文
  3. Creator-配置MSVC调试器
  4. linux nohup /dev/null,nohup结合/dev/null
  5. win10安装ensp启动40_装系统不求人,快速制作启动U盘,傻瓜式重装WIN10
  6. arm9 安装java_QT5.7 AM1808 ARM9的交叉编译
  7. (42)Gulp在Yeoman脚手架工具中的应用
  8. win11怎么快速返回桌面 windows11快捷键返回桌面的设置方法
  9. .Net中常用的几种ActionResult
  10. linux给用户user1设置密码,Linux用户管理之useradd、passwd命令讲解
  11. 魅族mx4pro刷linux,老树开新花 魅族MX4 Pro刷Flyme 5体验
  12. mysql +cobar_转:阿里开源Mysql分布式中间件:Cobar
  13. GIMP制作电子签名
  14. SHU-“盛大游戏杯”第15届上海大学程序设计联赛夏季赛暨上海高校金马五校赛-K-购买装备
  15. 2021-03-22 什么是SFP端口
  16. Sparkplug规范-4.引用标准和资源
  17. vue js樱花飘落背景特效
  18. 常用的几种PPT做图小技巧!
  19. ssm项目---人事管理系统:员工与部门、职位实现一对一
  20. Kaggle上的狗品种识别(ImageNet Dogs)

热门文章

  1. 双系统linux解压后怎么安装,先装linux再装windows双系统
  2. qomo linux最新版本,“珠峰”Qomo Linux新版本将迎来重大变革
  3. 2019死磕java面试题_死磕 java同步系列之开篇
  4. object.__比较运算__
  5. python 链接数据库
  6. scrapy.spider
  7. Oracle的order by关键字
  8. python中的mul函数_Sympy:“Mul”对象没有分层函数的“cos”属性
  9. Linux学习总结(36)——创建、复制、剪切、重命名、清空和删除文件夹的命令
  10. Java基础学习总结(81)——如何尽可能的减少Java代码中bug