BZOJ3209(luogu 4317)花神的数论题题解
题目
设 sum(i) 表示 i 的二进制表示中 1 的个数。给出一个正整数 N ,花神要问你 派(Sum(i)),也就是 sum(1)—sum(N) 的乘积(n<=1e15)。
分析
好吧,一看数据范围及可知暴力不可做我是不会说我打了一次暴力得了50分的,看一下让求的,恶心,仔细观察后觉得是一道数位DP,可先将n换做二进制,在每一位每一位的分析,若为0则跳过,若为1则处理一番,在处理时可先脚动模拟一番,发现和杨辉三角略有联系,故先处理处杨辉三角,最终出答案(代码里都有体现),时间是:luogu 0ms,bzoj 48ms 从中体现出了bzoj评测机运算速度较慢。
上代码
#include<bits/stdc++.h> using namespace std; long long al[60],bl[60],f[60][60],x[60],y[60],m=0,a,b,k=1,n,mod=10000007,ans=1,qaq[60][60]; long long power(long long a,long long b){ //快速幂if(b==0)return 1;if(b==1)return a;return b%2==0?power(a*a%mod,b/2)%mod:a*power(a*a%mod,b/2)%mod; } int main(){memset(al,0,sizeof(al));memset(f,0,sizeof(f));memset(bl,0,sizeof(bl));memset(x,0,sizeof(x));memset(y,0,sizeof(y));memset(qaq,0,sizeof(qaq));for(int i=1;i<=60;i++)f[i][1]=f[i][i]=1;for(int i=2;i<=60;i++)for(int j=2;j<i;j++)f[i][j]=f[i-1][j-1]+f[i-1][j];for(int i=1;i<=60;i++)for(int j=1;j<=i;j++)qaq[i][j]=qaq[i-1][j]+f[i][j];for(int i=1;i<=60;i++)qaq[i][1]++;scanf("%lld",&b);qaq[0][1]=1;if(b%2==1)al[1]=1;while(b>1){b/=2;k++;if(b%2==1)al[k]=1;}for(int i=k;i>0;i--)if(al[i]){long long anss=1;for(int j=1;j<=i;j++){anss=anss*power(j+m,qaq[i-1][j])%mod;}ans=ans*anss%mod;m++;}printf("%lld\n",ans);return 0; }
转载于:https://www.cnblogs.com/wzyzxy/p/9069003.html
BZOJ3209(luogu 4317)花神的数论题题解相关推荐
- bzoj3209:3209: 花神的数论题
觉得还是数位dp的那种解题形式但是没有认真的想,一下子就看题解.其实还是设置状态转移.一定要多思考啊 f[i][j]=f[i-1][j]+g[i-1][j] g[i][j]=f[i-1][j-1]+g ...
- #数位dp#洛谷 4317 花神的数论题
感谢dalao@小粉兔的帮助 dalao's 博客园,dalao's 洛谷博客 题目 设f[i]f[i]f[i]表示iii转化为二进制后1的个数,求∏i=1nf[i]\prod_{i=1}^nf[i] ...
- 数据范围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 花神的数论题——数位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】 花神的数论题
http://www.lydsy.com/JudgeOnline/problem.php?id=3209 (题目链接) 题意 ${sum(i)}$表示${i}$的二进制表示中${1}$的个数.求${\ ...
- bzoj 3209 花神的数论题 —— 数位DP
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3209 算是挺简单的数位DP吧,但还是花了好久才弄明白... 又参考了博客:https://b ...
最新文章
- Linux纯脚本故障转移集群
- android+包+反编译,简单的Android之apk包反编译方法
- 2.3.3 浮点数的加减运算与强制类型转换
- 悬浮窗_华为手机悬浮窗设置在哪里
- Apache、Tomcat、IIS(PHP、JSP、ASP)共存及安装Tomcat
- dp之多重背包poj2392
- linux dev nfc,linux下的nfc开发
- 关于智能手机的基本知识
- 公司部分断电,这些人就没法干活?
- pycharm快捷键之①“上下移动某一行“②参数提示
- PS滤镜学习视频教程
- AMiner推荐论文:Strongly coupled N-doped graphene quantum dots/Ni(Fe)OxHy electrocatalysts with accelerat
- 当你的浏览器页面被篡改时,我们该怎么办
- 现在的FM电台呀,什么玩艺儿
- 解决:Not creating XLA devices, tf_xla_enable_xla_devices not set
- “跟消费谈恋爱,跟科技结婚”,汤臣倍健开启VDS新周期
- 手机电路板文件_PCB工程师必看,从图纸到成品,电路板的制作只需这三大流程...
- 【PyCharm】修改编辑器背景
- 第二章 基本Bean的装载
- 当你心态不好的时候,可以看看这些句子。Reset your Brain!
热门文章
- FFmpeg的H.264解码器源代码简单分析:概述
- FFmpeg源代码简单分析:avcodec_close()
- 修改CentOS默认yum源为国内镜像
- oracle总是未响应,求教 pl/sql连接本机数据库是未响应问题
- mysql创建表shop_ShopXO商城-支付方式 - 数据库设计 - 数据库表结构 - 果创云
- java消除整型数组中重复的元素,排序后输出新数组
- stl vector 容量与大小之间的关系
- 牛客网暑期ACM多校训练营(第九场)H. Prefix Sum(CDQ分治)
- TCP和UDP的不同
- Java 绘制艺术图案