2017.4.21 2^k进制数 思考记录
题目很长很坑爹 读了半天才知道什么意思 原来是数位dp、、、
然而我第一次打时用滚动数组忘了消除上一维的影响 (本次不能调用本次)
然后还要用dt的高精 然后调试的时候查看里不能有赋值语句、、不然直接影响主程序、
另外压位是很麻烦的、、、 这个题高精要开到100,但不用压位也可以过、
码:
#include<iostream>
#include<cstdio>
using namespace std;
#include<cmath>
#define ll long long
ll f[2][600][150],qian[600][150],ans[150],w,k,shang,zui,now,i,j;
void gjj(int a,int b,int c)
{ll jin=0,lin=0;for(int i=1;i<=100;i++){lin=jin;jin=(qian[a+1][i]+f[b][c][i]+jin)/10;qian[a][i]=(qian[a+1][i]+f[b][c][i]+lin)%10; }
}
void fuzhi(int a)
{for(int i=1;i<=100;i++)f[now][a][i]=qian[a+1][i];
}
void gjj2(int a)
{ll jin=0,lin=0;for(int i=1;i<=100;i++){lin=jin;jin=(ans[i]+f[now][a][i]+jin)/10;ans[i]=(ans[i]+f[now][a][i]+lin)%10; }
}
int main()
{scanf("%lld%lld",&k,&w);ll wei=w/k;if(w%k)wei++,zui=pow(2,w%k);shang=pow(2,k);for(i=1;i<shang;i++){f[now][i][1]=1;}now^=1;for(i=2;i<=wei;i++,now^=1){ //cout<<shang<<" "; if(i!=wei||!zui){ for(j=shang-1;j>=1;j--)gjj(j,now^1,j);//qian[j]=qian[j+1]+f[now^1][j];for(j=1;j<shang;j++)fuzhi(j),gjj2(j);//f[now][j]=qian[j+1];ans+=f[now][j]}else {for(j=shang;j>=1;j--)gjj(j,now^1,j);for(j=1;j<zui;j++)fuzhi(j),gjj2(j);}}bool flag=0;for(i=100;i>=1;i--){if(flag){printf("%lld",ans[i]);continue;}if(ans[i]){ flag=1,printf("%lld",ans[i]);} }
}
其实这个题可以用组合数,但高精乘高精相对难写、、
2017.4.21 2^k进制数 思考记录相关推荐
- 2017.4.22 进制转换 思考记录
这个数据范围..直接dfs就能过 迭代+dfs'' #include<iostream> #include<cstdio> using namespace std; #incl ...
- 2017.9.21 道路修建(noi2011) 思考记录
这个题,,dfs即可 但听说dfs会爆栈,还会被卡. 所以就写了一个拓扑. noi2011很良心啊 码(不知为何,非常的慢): #include<cstdio> #include<c ...
- P1066 2^k进制数 NOIP 2006 提高组 第四题
洛谷蓝题(点击跳转) 提高组 第四题 题目描述 设r是个2^k 进制数,并满足以下条件: (1)r至少是个2位的2^k 进制数. (2)作为2^k 进制数,除最后一位外,r的每一位严格小于它右边相邻的 ...
- [NOIP2006] 提高组 洛谷P1066 2^k进制数
题目描述 设r是个2^k 进制数,并满足以下条件: (1)r至少是个2位的2^k 进制数. (2)作为2^k 进制数,除最后一位外,r的每一位严格小于它右边相邻的那一位. (3)将r转换为2进制数q后 ...
- c++描述将一个2进制数转化成10进制数(用到初始化栈,进栈,入栈)
1 /* 2 c++描述将2进制数转化成10进制数 3 问题,1.初始化栈后,用new,不知道delete是否要再写一个函数释放内存, 4 还是在哪里可以加上delete 5 2.如果栈满了,我要分配 ...
- 彻底明白各进制数之间的转换
进制之间的转换是很基础的知识,为了清晰.简单.易懂的弄清楚这方面,所以我才写这篇文章的念头,希望能让你再也不用担心.害怕进制之间的转换了. 二进制 二进制是计算技术中广泛采用的一种数制.二进制数据是用 ...
- 各种进制数之间的转换
计算机中各种进制数之间的转换 各种进制之间的转化都可以通过二进制为桥梁 二进制之间整数的转换 示例1:二进制数1100转化为各种进制数 1100转化成十进制数 1100 = 1*23+1*22+0 ...
- 进制数及其转换(二进制,十进制,十六进制)
数值数据是表示数量大小的数据,有多种表示方法.日常生活中一般采用十进制数进行计数和计算,但十进制数难以在计算机内直接存储与运算.在计算机系统中,通常将十进制数作为人机交互的媒介,而数据则以二进制数的形 ...
- 1.不同进制数之间的相互转换
我们比较常用的数制有十进制.二进制.八进制和十六进制.二进制就是逢二进一,每位都是小于二的数,其他进制类推.计算机存储数据使用的是二进制编码. 对于一个R进制的数X来说,其值可以通过下面的公式算出来: ...
最新文章
- python数据分析面试_python数据分析面试
- 网站收录上不去估计是这几个方面出了问题
- dojo自定义表格组件
- 【译】Advanced Blockchain Concepts for Beginners
- Delphi XE7中新并行库
- Kettle7.1在window启动报错
- React开发(183):ant design 中treeSelect控制选中
- 基于wrapper的特征选择——递归特征消除RFE的python实现
- 正则表达式之子表达式 ‘()’ 中表达式 '[]' 大表达式 '{}'
- opencv学习笔记01
- express 项目文件目录说明及功能描述
- Android ID谷歌认证,GSF ID KEY(谷歌服务框架ID)作为Android设备唯一标识符
- BOS启动的客户端,打开序时簿只显示一行
- python爬取b站所有视频_如何快速爬取B站全站视频信息
- 通过linux进程号(pid)查找Oracle的session中都执行那些sql
- win10无法安装完成若要在此计算机上,win10提示windows安装无法继续怎么办
- android 简单拍照,android实现简单拍照功能
- 鼠标左键双击图标出现属性窗口的问题
- ddddocr 汉字位置识别
- 关于海报和插画的区别
热门文章
- 【李宏毅机器学习】Transformer(p23) 学习笔记
- 从零开始学Pytorch(十八)之kaggle图像分类
- 从零开始学keras之使用预训练的卷积神经网络
- spring boot整合shiro继承redis_Springboot+Shiro+redis整合
- mongodb的条件查询笔记
- python 模拟浏览器selenium_Python使用Selenium模块模拟浏览器抓取斗鱼直播间信息示例...
- 在哪里买铁甲格斗机器人_铁甲雄心Ⅱ火了 优必选“超变铁甲”掀起闯关赢免单热潮...
- vue v-for循环动态获取_快速、简洁讲明Vue中vfor循环key的作用
- 普通路由器改4g路由器_4G宽带随心用,办公娱乐更自由,蒲公英X4C路由器体验|路由器|蒲公英|宽带|wifi|sim...
- linux shell 一行 for,BASH shell脚本回显到同一行输出