[noip2006]2^k进制数(高精度+进制)
来源:互联网 发布:如何制作淘宝宝贝长图 编辑:程序博客网 时间:2024/05/20 17:07
题目:
我是超链接
题解:
列了列柿子,如果这玩意用markdown实现的话得有多少大括号啊
每一位2^k进制数可以转化为k位二进制数
那么我们可以分为两种情况
一定可以讨论的 – – – –位数<=w/k
不一定存在的– – – – –位数=w/k+1(只有w%k!=0才存在)
这个依次递增的东西怎么填数啊?诶?好像组合数就可以啊,在可以取的范围中r找n位数,那不就是
第一类比较好讨论,取数的范围可以是1~2^k-1,找的位数可以迭代
主要来说第二类,当涉及首项的时候,首项不能太大啊,不然就超过了规定的位数,那最大可以是多大呢:【转化为二进制时最大只有w%k位】,第w%k+1位的数字是2^w%k(第1位的数字是2^0哦),那么最大可以取到的数字就是2^w%k-1
这是首项的取值,后面的值要比ta大,那取数的范围就是
注意哦:
1、这个题目要用高精度!包括组合数也已经很大了也要用高精度!
2、你需要比较一下2^k-1和w/k的大小,如果w/k大于范围也没有那么多数可以填,数组也会炸掉
一个总结的图片:
l为位数,r为可取数集
代码:
#include <cstdio>#include <cstring>#include <iostream>using namespace std;int jz=1,k,w,mi[20];struct bignum{int l,a[205];void cl(){memset(a,0,sizeof(a));l=0;}}ans,C[550][550];bignum operator +(const bignum &a,const bignum &b){ bignum c;c.cl(); c.l=max(a.l,b.l); int x=0; for (int i=1;i<=c.l;i++) { c.a[i]=a.a[i]+b.a[i]+x; x=c.a[i]/10000; c.a[i]%=10000; } while (x) c.a[++c.l]=x%10000,x/=10000; return c;}void init(){ int i,j; for (i=0;i<=mi[k];i++) C[i][0].l=1,C[i][0].a[1]=1; for (i=1;i<=mi[k];i++) for (j=1;j<=i;j++) C[i][j]=C[i-1][j]+C[i-1][j-1];}int main(){ int i,xh; scanf("%d%d",&k,&w); mi[0]=1;for (i=1;i<=k;i++) mi[i]=mi[i-1]*2; init(); xh=min(mi[k]-1,w/k); for (i=2;i<=xh;i++) ans=ans+C[mi[k]-1][i]; for (i=1;i<=mi[w%k]-1;i++) ans=ans+C[mi[k]-1-i][xh]; printf("%d",ans.a[ans.l]); for (i=ans.l-1;i>=1;i--) { printf("%d",ans.a[i]/1000); printf("%d",ans.a[i]/100%10); printf("%d",ans.a[i]/10%10); printf("%d",ans.a[i]%10); }}
阅读全文
0 0
- [noip2006]2^k进制数(高精度+进制)
- NOIP2006 2k进制数
- NOIP2006 2k进制数
- NOIP2006【2^k进制数】
- NOIP2006 2^k进制数
- noip2006 2^k进制数 (组合数学)
- Noip2006 2^k进制数题解
- 洛谷 P1066 [NOIP2006 T4] 2^k进制数
- [noip2006]数列(进制)
- noip2006T4 2^k进制数(组合数学+高精度)
- 高精度数学-洛谷P1066 2^k进制数
- 2^k进制数问题(动态规划+高精度/C++)
- [洛谷 1066]2^k进制数---组合数学+高精度
- noip2006 数列 (二进制)
- NOIP2006
- Ural 1012. K-based Numbers. Version 2 &&1013. K-based Numbers. Version 3 DP+高精度
- noip2006 JAM计数法 (模拟)
- noip2006 能量项链 (区间dp)
- RecyclerView
- JAVASCRIPT学习笔记之正则表达式
- 工作中积累的一些mssql操作
- c# 内存机制
- fastjson反序列化
- [noip2006]2^k进制数(高精度+进制)
- 初见Sping之Bean
- 在不同的局域网内连接plsql显示无监听服务
- 如何使用Spring Boot从0到1搭建一个Java后台(一)
- 浅析WEB应用攻击及其防御方式
- 如何利用C++搭建个人专属的TensorFlow
- A Secure HDFS Client Example
- Unity3D 动态批量加载本地图片
- js判断中文字符和英文字符的长度