【题解】洛谷P1066 [NOIP2006TG] 2^k进制数(复杂高精+组合推导)
洛谷P1066:https://www.luogu.org/problemnew/show/P1066
思路
挺难的一道题 也很复杂
满足题目要求的种数是两类组合数之和
r的最多位数m为
- w/k(当w mod k=0 时)
- w/k+1(当 w mod k=1 时)
First:
位数为2~m的种数
即从2k-1中不重复地取i个的组合数(只取到2k-1是因为2k会进位)
即C(2k-1,2)+C(2k-1,3)+...+C(2k-1,m)
Second:
位数为m+1的种数
因为要每个数严格小于左边
所以枚举第一位的值i 再取其他的组合数C(2k-1-i,m)
代码
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int total[];//存高精ans
int k,w,n,m,c;
int gcd(int a,int b)
{
if(a%b==) return b;
else return gcd(b,a%b);
}
void C(int n,int m)
{
if(n<m) return;
int a[],b[],x,g;
for(int i=m;i>=;i--)
{
a[i]=n+i-m;//分子的因子n!/(n-m)!
b[i]=i;//分母的因子m!
}
for(int i=;i<=m;i++)//约分 去掉分母b[i]
{
if(b[i]==) continue;
for(int j=m;j>=;j--)//高精除法
{
x=gcd(b[i],a[j]);
b[i]/=x;
a[j]/=x;
if(b[i]==) break;
}
}
memset(b,,sizeof(b));
b[]=,b[]=;
for(int j=;j<=m;j++)//约分后的分子相乘
{
g=;
if(a[j]==) continue;
for(int i=;i<=b[];i++)
{
b[i]=b[i]*a[j]+g;//高精乘法
g=b[i]/;
b[i]%=;
if(i==b[]&&g!=) b[]++;//如果还要进位 说明长度要加1
}
}
total[]=max(total[],b[]);
for(int i=;i<=total[];i++)//高精加法
{
total[i]+=b[i];
total[i+]+=total[i]/;
total[i]%=;
}
if(total[total[]+]!=) total[]++;//如果还要进位 说明长度要加1
}
int main()
{
cin>>k>>w;
n=(<<k)-;//2^k-1
c=w%k;
m=w/k;//最高位数
for(int i=m;i>=;i--) C(n,i);//计算位数为2~len-1的组合数
c=(<<c)-;//最高位可取最大值
if(c>=&&n>m)//计算位数为len的组合数
for(int i=;i<=c;i++) C(n-i,m);//第一位取了i 后面只能取n-i 且要取m个
for(int j=total[];j>=;j--) cout<<total[j];//逆序输出ans
}
【题解】洛谷P1066 [NOIP2006TG] 2^k进制数(复杂高精+组合推导)的更多相关文章
- 【洛谷p1066】2^k进制数
(不会敲键盘惹qwq) 2^k进制数[传送门] 算法标签: (又是一个提高+省选-的题) 如果我说我没听懂你信吗 代码qwq: #include<iostream> #include< ...
- 关于不同进制数之间转换的数学推导【Written By KillerLegend】
关于不同进制数之间转换的数学推导 涉及范围:正整数范围内二进制(Binary),八进制(Octonary),十进制(Decimal),十六进制(hexadecimal)之间的转换 数的进制有多种,比如 ...
- [洛谷 P1013] NOIP1998 提高组 进制位
问题描述 著名科学家卢斯为了检查学生对进位制的理解,他给出了如下的一张加法表,表中的字母代表数字. 例如: L K V E L L K V E K K V E KL V V E KL KK E E K ...
- 洛谷P1066 2^k进制数(题解)(递推版)
https://www.luogu.org/problemnew/show/P1066(题目传送) (题解)https://www.luogu.org/problemnew/solution/P106 ...
- 洛谷 P1066 2^k进制数
P1066 2^k进制数 题目描述 设r是个2^k 进制数,并满足以下条件: (1)r至少是个2位的2^k 进制数. (2)作为2^k 进制数,除最后一位外,r的每一位严格小于它右边相邻的那一位. ( ...
- 洛谷P1066 2^k进制数
P1066 2^k进制数 题目描述 设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后 ...
- 洛谷P1206 [USACO1.2]回文平方数 Palindromic Squares
P1206 [USACO1.2]回文平方数 Palindromic Squares 271通过 501提交 题目提供者该用户不存在 标签USACO 难度普及- 提交 讨论 题解 最新讨论 暂时没有 ...
- C#版 - Leetcode 504. 七进制数 - 题解
C#版 - Leetcode 504. 七进制数 - 题解 Leetcode 504. Base 7 在线提交: https://leetcode.com/problems/base-7/ 题目描述 ...
随机推荐
- 【Linux】Linux下使用Docker快速部署Oracle数据库
安装最新Docker wget -qO- https://get.docker.com/ | sh` 安装 docker-compose sudo curl -L https://github.com ...
- [Activator-HelloAkka] Define our Actors
The Actor is the unit of execution in Akka. Actors are object-oriented in the sense that they encaps ...
- 坐标深圳 | Kubernetes!我要用这样的姿势拥抱你
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 从去年至今,容器.Kubernetes话题的热度就持续不减,有人说基于容器 +Kubernetes 的新型 PaaS 将会成为云计算的主流: ...
- dpkg: error: dpkg status database is locked by another process 解决方法
使用dpkg -i/apt命令安装,报错: ------------------------------------------------------------- dpkg: error: dpk ...
- tomcat8.5.8遇到的两个问题
压力测试场景,前端nginx反向代理到4个tomcat实例,在其中的一个实例上产生了大量的countDownConnection Incorrect connection count警告 WARNIN ...
- 解决The current branch is not configured for pull No value for key branch.master.merge found in config
使用Git Pull项目的时候出现这个问题: The current branch is not configured for pull No value for key branch.master. ...
- Android4.4 在Framework新增内部资源编译不过的问题
如果在Frameworks新增内部资源,并在Java代码中使用类似形式来引用资源:com.android.internal.R.layout.xxx,需要在frameworks/base/core/r ...
- git的commit规范及强制校验
1.背景 在多人协作项目中,如果代码风格统一.代码提交信息的说明准确,那么在后期协作以及Bug处理时会更加方便. 先来介绍本人公司采用的commit规范 Commit message格式 < ...
- IntelliJ IDEA 2017.3.5 安装 lombok-plugin-0.17 失败,通过网络下载总是超时
1.问题: IntelliJ IDEA 2017.3.5 安装 lombok-plugin-0.17 失败,通过网络下载总是超时: 2.原因:IntelliJ IDEA 2017.3.5 目前还不支持 ...
- js添加、修改、删除xml节点例子
version="1.0" encoding="gb2312"?> . <bookstore> . <book genre=" ...