【洛谷p1066】2^k进制数
(不会敲键盘惹qwq)
算法标签:
(又是一个提高+省选-的题)
如果我说我没听懂你信吗
代码qwq:
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int a[][][],tot[],mmax;
int pow(int a,int b)
{
int ans=,with=a;
while(b)
{
if(b&) ans*=with;
with*=with;
b>>=;
}
return ans;
}
void jiafa(int j[],int a[])
{
int lb=;
while(lb<=j[]||lb<=a[])
{
j[lb]+=a[lb];
if(j[lb]>=)
{
j[lb]%=;
j[lb+]++;
}
lb++;
}
while(j[lb]>=)
{
j[lb]%=;
lb++;
j[lb]++;
}
while(!j[lb]&&lb>) lb--;
if(lb>j[]) j[]=lb;
}
void jiafa1(int a[],int b)
{
int lb=;
while(b)
{
a[++lb]=b%;
b/=;
}
a[]=lb;
jiafa(tot,a);
}
int main()
{
int k,w;
cin>>k>>w;
int g=w/k;
bool youyu=;
int mmax2;
if(w%k)
{
g++;
youyu=;
mmax2=pow(,w%k)-;
}
mmax=pow(,k)-;
for(int i=;i<mmax;i++) jiafa1(a[][i],mmax-i);
int l=,n=;
for(int i=;i<=g;i++)
{
if(i==g&&youyu&&mmax2<mmax)
{
for(int i=mmax-;i>mmax2;i--)
jiafa(a[n][mmax2],a[l][i]);
jiafa(tot,a[n][mmax2]);
for(int j=mmax2-;j>=;j--)
{
memcpy(a[n][j],a[n][j+],sizeof(a[n][j+]));
jiafa(a[n][j],a[l][j+]);
jiafa(tot,a[n][j]);
}
break;
}
jiafa(a[n][mmax-],a[l][mmax]);
jiafa(tot,a[n][mmax-]);
for(int j=mmax-;j>=;j--)
{
memcpy(a[n][j],a[n][j+],sizeof(a[n][j+]));
jiafa(a[n][j],a[l][j+]);
jiafa(tot,a[n][j]);
}
for(int j=;j<=mmax;j++)
memset(a[l][j],,sizeof(a[l][j]));
n++;l++;
if(n==) n=;
if(l==) l=;
}
int lt=tot[];
while(!tot[lt]&<>) lt--;
for(;lt>;lt--) cout<<tot[lt];
return ;
}//装作是自己写的样子
end-
【洛谷p1066】2^k进制数的更多相关文章
- 洛谷 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的每一位严格小于它右边相邻的那一位. ( ...
- 洛谷P1066 2^k进制数(题解)(递推版)
https://www.luogu.org/problemnew/show/P1066(题目传送) (题解)https://www.luogu.org/problemnew/solution/P106 ...
- [NOIP2006] 提高组 洛谷P1066 2^k进制数
题目描述 设r是个2^k 进制数,并满足以下条件: (1)r至少是个2位的2^k 进制数. (2)作为2^k 进制数,除最后一位外,r的每一位严格小于它右边相邻的那一位. (3)将r转换为2进制数q后 ...
- 洛谷1066 2^k进制数
原题链接 大力猜结论竟然猜对了.. 对于一对\(k,w\),我们可以把\(w\)位划分成\(k\)位一段的形式,每一段就是转换成十进制后的一位,这个从题面的解释中应该可以理解. 先不考虑可能多出(即剩 ...
- [luogu]P1066 2^k进制数[数学][递推][高精度]
[luogu]P1066 2^k进制数 题目描述 设r是个2^k 进制数,并满足以下条件: (1)r至少是个2位的2^k 进制数. (2)作为2^k 进制数,除最后一位外,r的每一位严格小于它右边相邻 ...
- P1066 2^k进制数
传送门 题目描述 设r是个2^k 进制数,并满足以下条件: (1)r至少是个2位的2^k 进制数. (2)作为2^k 进制数,除最后一位外,r的每一位严格小于它右边相邻的那一位. (3)将r转换为2进 ...
- [Luogu P1066] 2^k进制数 (组合数或DP)
题面 传送门:https://www.luogu.org/problemnew/show/P1066 Solution 这是一道神奇的题目,我们有两种方法来处理这个问题,一种是DP,一种是组合数. 这 ...
- 洛谷P1582——倒水(进制,数学)
https://www.luogu.org/problem/show?pid=1582 题目描述 一天,CC买了N个容量可以认为是无限大的瓶子,开始时每个瓶子里有1升水.接着~~CC发现瓶子实在太多了 ...
- Luogu P1066 2^k进制数 组合数学
分两种情况:$k|n$和$k$不整除$n$ 如果$k|n$,那么长度为$n$的二进制数就能被恰好分成$n/k$个块:所以若某个数长度是$x$个块,由于每个块内能填不同的$2^k-1$个数,那么就有$C ...
随机推荐
- 手机连接wamp网页
1.改变wamp的put online 状态 Right click Wampmanager -> WAMPSetting -> Menu Item: Online/Offline
- VB调用C# dll
cd C:\Windows\Microsoft.NET\Framework\v4.0.30319注册regasm myTest.dll /tlb:myTest.tlb
- python终端打印带颜色的print
原理 实现过程: 终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关. 转义序列是以ESC开头,即用\033来完成(ESC的ASCII码用十进制表示 ...
- 017-并发编程-Condition
一.概述 任何一个Java对象,都拥有一组监视器方法,主要包括wait().notify().notifyAll()方法,这些方法与synchronized关键字配合使用可以实现等待/通知机制.使用这 ...
- java框架之Spring(4)-Spring整合Hibernate和Struts2
准备 导包 Struts2 导入 Struts2 zip 包解压目录下 'apps/struts-blank.war' 中所有 jar 包,如下: asm-3.3.jar asm-commons-3. ...
- Python四线程爬取西刺代理
import requests from bs4 import BeautifulSoup import lxml import telnetlib #验证代理的可用性 import pymysql. ...
- 0003-20180422-自动化第三章-python基础学习笔记
3章 内容回顾: 1. 计算机组成 2. 程序编译器 3. 变量 4. 条件 5. 循环 6. py2与py3区别 - 默认编码, - 除法, - input ,raw_input 7. 位,字节关系 ...
- python 第四阶段 学习记录之----异步
异步: 知识情况: 1.多线程, 多线程使用场景 1.IO操作不占CPU,读写数据(网络中.系统中) 2.计算占CPU, 3.上下文切换不占CPU.它消耗资源 python多线程 不适合CPU密集型的 ...
- Java访问修饰符(访问控制符)
Java 通过修饰符来控制类.属性和方法的访问权限和其他功能,通常放在语句的最前端.例如: public class className { // body of class } private bo ...
- 用 python 生成一个简单的词云图
import jieba from nltk import * from wordcloud import WordCloud import matplotlib.pyplot as plt word ...