题目很长很坑爹    读了半天才知道什么意思    原来是数位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进制数 思考记录相关推荐

  1. 2017.4.22 进制转换 思考记录

    这个数据范围..直接dfs就能过 迭代+dfs'' #include<iostream> #include<cstdio> using namespace std; #incl ...

  2. 2017.9.21 道路修建(noi2011) 思考记录

    这个题,,dfs即可 但听说dfs会爆栈,还会被卡. 所以就写了一个拓扑. noi2011很良心啊 码(不知为何,非常的慢): #include<cstdio> #include<c ...

  3. P1066 2^k进制数 NOIP 2006 提高组 第四题

    洛谷蓝题(点击跳转) 提高组 第四题 题目描述 设r是个2^k 进制数,并满足以下条件: (1)r至少是个2位的2^k 进制数. (2)作为2^k 进制数,除最后一位外,r的每一位严格小于它右边相邻的 ...

  4. [NOIP2006] 提高组 洛谷P1066 2^k进制数

    题目描述 设r是个2^k 进制数,并满足以下条件: (1)r至少是个2位的2^k 进制数. (2)作为2^k 进制数,除最后一位外,r的每一位严格小于它右边相邻的那一位. (3)将r转换为2进制数q后 ...

  5. c++描述将一个2进制数转化成10进制数(用到初始化栈,进栈,入栈)

    1 /* 2 c++描述将2进制数转化成10进制数 3 问题,1.初始化栈后,用new,不知道delete是否要再写一个函数释放内存, 4 还是在哪里可以加上delete 5 2.如果栈满了,我要分配 ...

  6. 彻底明白各进制数之间的转换

    进制之间的转换是很基础的知识,为了清晰.简单.易懂的弄清楚这方面,所以我才写这篇文章的念头,希望能让你再也不用担心.害怕进制之间的转换了. 二进制 二进制是计算技术中广泛采用的一种数制.二进制数据是用 ...

  7. 各种进制数之间的转换

    计算机中各种进制数之间的转换 各种进制之间的转化都可以通过二进制为桥梁 二进制之间整数的转换 示例1:二进制数1100转化为各种进制数 1100转化成十进制数 ​ 1100 = 1*23+1*22+0 ...

  8. 进制数及其转换(二进制,十进制,十六进制)

    数值数据是表示数量大小的数据,有多种表示方法.日常生活中一般采用十进制数进行计数和计算,但十进制数难以在计算机内直接存储与运算.在计算机系统中,通常将十进制数作为人机交互的媒介,而数据则以二进制数的形 ...

  9. 1.不同进制数之间的相互转换

    我们比较常用的数制有十进制.二进制.八进制和十六进制.二进制就是逢二进一,每位都是小于二的数,其他进制类推.计算机存储数据使用的是二进制编码. 对于一个R进制的数X来说,其值可以通过下面的公式算出来: ...

最新文章

  1. python数据分析面试_python数据分析面试
  2. 网站收录上不去估计是这几个方面出了问题
  3. dojo自定义表格组件
  4. 【译】Advanced Blockchain Concepts for Beginners
  5. Delphi XE7中新并行库
  6. Kettle7.1在window启动报错
  7. React开发(183):ant design 中treeSelect控制选中
  8. 基于wrapper的特征选择——递归特征消除RFE的python实现
  9. 正则表达式之子表达式 ‘()’ 中表达式 '[]' 大表达式 '{}'
  10. opencv学习笔记01
  11. express 项目文件目录说明及功能描述
  12. Android ID谷歌认证,GSF ID KEY(谷歌服务框架ID)作为Android设备唯一标识符
  13. BOS启动的客户端,打开序时簿只显示一行
  14. python爬取b站所有视频_如何快速爬取B站全站视频信息
  15. 通过linux进程号(pid)查找Oracle的session中都执行那些sql
  16. win10无法安装完成若要在此计算机上,win10提示windows安装无法继续怎么办
  17. android 简单拍照,android实现简单拍照功能
  18. 鼠标左键双击图标出现属性窗口的问题
  19. ddddocr 汉字位置识别
  20. 关于海报和插画的区别

热门文章

  1. 【李宏毅机器学习】Transformer(p23) 学习笔记
  2. 从零开始学Pytorch(十八)之kaggle图像分类
  3. 从零开始学keras之使用预训练的卷积神经网络
  4. spring boot整合shiro继承redis_Springboot+Shiro+redis整合
  5. mongodb的条件查询笔记
  6. python 模拟浏览器selenium_Python使用Selenium模块模拟浏览器抓取斗鱼直播间信息示例...
  7. 在哪里买铁甲格斗机器人_铁甲雄心Ⅱ火了 优必选“超变铁甲”掀起闯关赢免单热潮...
  8. vue v-for循环动态获取_快速、简洁讲明Vue中vfor循环key的作用
  9. 普通路由器改4g路由器_4G宽带随心用,办公娱乐更自由,蒲公英X4C路由器体验|路由器|蒲公英|宽带|wifi|sim...
  10. linux shell 一行 for,BASH shell脚本回显到同一行输出