【bzoj3209】 花神的数论题
http://www.lydsy.com/JudgeOnline/problem.php?id=3209 (题目链接)
题意
${sum(i)}$表示${i}$的二进制表示中${1}$的个数。求${\prod^n sum(i)}$
Solution
${f_{i,s}}$表示dp到第${i}$位,已经有${s}$个${1}$时的乘积。然后一路dfs就可以了。
细节
LL,返回值要与1取个max
代码
// bzoj3598
#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<ctime>
#define LL long long
#define inf (1ll<<30)
#define MOD 10000007
#define Pi acos(-1.0)
#define free(a) freopen(a".in","r",stdin),freopen(a".out","w",stdout);
using namespace std;LL f[60][60],m;
int n,t[60];LL dfs(int pos,LL s,int lim) {if (!pos) return s;if (!lim && f[pos][s]!=-1) return f[pos][s];int end=lim ? t[pos] : 1;LL res=1;for (int i=0;i<=end;i++)(res*=max(1ll,dfs(pos-1,s+i,lim && i==end)))%=MOD;if (!lim) f[pos][s]=res;return res;
}
int main() {memset(f,-1,sizeof(f));scanf("%lld",&m);for (n=0;m;m>>=1) t[++n]=m&1;printf("%lld",dfs(n,0,1));return 0;
}
转载于:https://www.cnblogs.com/MashiroSky/p/6399213.html
【bzoj3209】 花神的数论题相关推荐
- bzoj3209 花神的数论题——数位dp
题目大意: 花神的题目是这样的 设 sum(i) 表示 i 的二进制表示中 1 的个数.给出一个正整数 N ,花神要问你 派(Sum(i)),也就是 sum(1)-sum(N) 的乘积. 要对1000 ...
- 2018.10.27 bzoj3209: 花神的数论题(数位dp)
传送门 数位dpdpdp经典题. 题面已经暗示了我们按照二进制位来数位dpdpdp. 直接dpdpdp多少个数有111个111,222个111,333个111-, 然后快速幂算就行了. 于是我们枚举前 ...
- bzoj3209:3209: 花神的数论题
觉得还是数位dp的那种解题形式但是没有认真的想,一下子就看题解.其实还是设置状态转移.一定要多思考啊 f[i][j]=f[i-1][j]+g[i-1][j] g[i][j]=f[i-1][j-1]+g ...
- 数据范围BZOJ 3209(花神的数论题-数位统计+1,被数据范围坑了)
PS:今天上午,非常郁闷,有很多简单基础的问题搞得我有些迷茫,哎,代码几天不写就忘.目前又不当COO,还是得用心记代码哦! 3209: 花神的数论题 Time Limit: 10 Sec Memory ...
- [数位dp] bzoj 3209 花神的数论题
[数位dp] bzoj 3209 花神的数论题 题意:中文题. 思路:和普通数位dp一样,这里转换成二进制,然后记录有几个一. 统计的时候乘起来就好了. 代码: #include"cstdl ...
- bzoj 3209: 花神的数论题 喵哈哈村的秘境探险(四)
3209: 花神的数论题 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 2169 Solved: 1006 [Submit][Status][Di ...
- BZOJ3209(luogu 4317)花神的数论题题解
题目 设 sum(i) 表示 i 的二进制表示中 1 的个数.给出一个正整数 N ,花神要问你 派(Sum(i)),也就是 sum(1)-sum(N) 的乘积(n<=1e15). 分析 好吧,一 ...
- bzoj 3209 花神的数论题 —— 数位DP
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3209 算是挺简单的数位DP吧,但还是花了好久才弄明白... 又参考了博客:https://b ...
- #数位dp#洛谷 4317 花神的数论题
感谢dalao@小粉兔的帮助 dalao's 博客园,dalao's 洛谷博客 题目 设f[i]f[i]f[i]表示iii转化为二进制后1的个数,求∏i=1nf[i]\prod_{i=1}^nf[i] ...
最新文章
- 一周一论文(翻译)——[SIGMOD 2016] RDMA over Commodity Ethernet at Scale
- android构建过程
- 一个简单函数的反汇编分析
- 北京内推 | 阿里云视频处理算法团队招聘视频处理算法实习生
- 小白也能学会的 Git 常用指令指南
- uniapp 定时执行_ftp上传,完成ftp定时上传、下载只需3步
- [css] 你是怎么设计css sprites(精灵图)的?有哪些技巧?
- 分页类与前台和后台的调用方法
- IIS5IIS6IIS7的ASP.net 请求处理过程比较(转)
- postgresql 客户端登录配置
- dos 批处理 for知识学习
- 3 个主流 Java 微服务框架,各有特色
- tx2 安装 Anaconda
- 局域网打印机共享外网
- 计算机取消健,电脑取消撤销快捷键是什么_电脑健盘中的所有英文组合意思超值解释建议收藏......
- 黄教头第六周作业 一个基础的反射型xss
- c语言中复合语句不用花括号,【单选题】C语言中,可将一系列语句置于( )从而构成复合语句。
A. 一对尖括号\ \之间 B. 一对圆括号\( )\之间 C. 一对花括号 { } 之间 D....
- java 读取url获取的xml
- 尚硅谷 SpringCloud 第二季学习笔记【已完结】
- 小学生python编程教程-小学生python编程在线教育-小码精灵编程线上教育机构