【洛谷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 ...
随机推荐
- Win10部署IIS 10.0
win10自带IIS10.0 控制面板 >> 程序 >>启用或关闭Windows功能 勾选完之后会安装IIS,安装完成后 计算机管理 >> 服务和应用程序 > ...
- spring拦截器-过滤器的区别
1. 理解 拦截器 :是在面向切面编程的时候,在你的 service 或者一个方法前调用一个方法,或者在方法后调用一个方法:比如动态代理就是拦截器的简单实现,在你调用方法前打印出字符串(或者做其它业 ...
- taro中子父传值
其实网上很多方法,我这只是一个简单的demo,废话不多说直接上代码 import Taro, { Component } from '@tarojs/taro' import { View, Text ...
- Unity中实现人物平滑转身
using UnityEngine; public class PlayerController : MonoBehaviour { ; ; ; void Update() { hor = Input ...
- angularjs 的ng-disabled属性操作
ng-readonly:不可用,但是可以提交数据 ng-disabled: 属性是控制标签是否可用(不可用且无法传值) 表达式控制: <input class="col-md-2 fo ...
- nrm 使用
全局安装 npm i nrm -g 全局安装nrm nrm ls 查看镜像地址: npm ---- https://registry.npmjs.org/ cnpm --- http://r.c ...
- EasyUI表格DataGrid格式化formatter用法
1.通过HTML标签创建数据表格时使用formatter <!DOCTYPE html> <html> <head> <meta charset=" ...
- Interesting (manacher + 前缀和处理)
题意:相邻的两端回文串的价值为两个回文串总的区间左端点 × 区间右端点.然后计算目标串中所有该情况的总和. 思路:首先用manacher求出所有中心点的最大半径,然后我们知道对于左区间我们把贡献记录在 ...
- 【2017-05-18】WebForm的Repeater控件及简单控件
<%@ %> - 这里面写一些声明和引用的 <% %> - 编写C#代码的 <%= %> - 往界面上输出一个变量的值 <%# Eval("属性名 ...
- 记录 用tiny6410 j-link eclipse 在线调试裸机代码leds
1.nand flash烧写uboot 并且启动nandflash uboot,用来初始化6410,进入uboot命令行界面 2.在terminal中输入JLinkGDBServer -device ...