题目描述

Being a secret computer geek, Farmer John labels all of his cows with binary numbers. However, he is a bit superstitious, and only labels cows with binary numbers that have exactly K "1" bits (1 <= K <= 10). The leading bit of each label is always a "1" bit, of course. FJ assigns labels in increasing numeric order, starting from the smallest possible valid label -- a K-bit number consisting of all "1" bits. Unfortunately, he loses track of his labeling and needs your help: please determine the Nth label he should assign (1 <= N <= 10^7).

FJ给他的奶牛用二进制进行编号,每个编号恰好包含K 个"1" (1 <= K <= 10),且必须是1开头。FJ按升序编号,第一个编号是由K个"1"组成。

请问第N(1 <= N <= 10^7)个编号是什么。

输入输出格式

输入格式:

  • Line 1: Two space-separated integers, N and K.

输出格式:

输入输出样例

输入样例#1:

7 3
输出样例#1:

10110 

题解:
20暴力
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,k,pos,a[];
int main(){
scanf("%d%d",&n,&k);
for(int i=;i<=+k;i++)a[i]=;
pos=;
for(int i=;i<=n;i++){
int p;
for(int j=+k;j>=pos-;j--)
if(a[j]==&&a[j+]==){
p=j+;break;
}
if(p==pos){
pos--;memset(a,,sizeof(a));
a[pos]=;
for(int j=+k;j>=;j--)a[j]=;
}else {
a[p]=;a[p-]=;
}
}
for(int i=pos;i<=+k;i++)
printf("%d",a[i]);
return ;
}

完全不懂这个AC代码

在洛谷上问了写这个代码的大佬..今天大佬给我讲了一下!

太神啦!这个题的题解网上都是一坨..(*゜ロ゜)ノ实在不愿意看..

(逃ヽ(゚∀゚*)ノ━━━ゥ♪

a[i]表示的是第i个1的位置,初始值为(按阳历来说)第一个1的位置是1,第二个

1的位置是2,第三个1的位置是3.二进制也就是1 1 1 。

我们开始找啦,样例是升序的第7个,我把1--7都列出来。

1 1 1

1 0 1 1

1 1 0 1

1 1 1 0

1 0 0 1 1

1 0 1 0 1

1 0 1 1 0

发现的规律是,每次将二进制串的从右往左数的第1个前面为0的1往左移一位。

这个1右边的1全部靠后。因为二进制串的大小取决于1的位置,尽量别让高位有1。

然后我们从右往左找那个能移动的1吧。能移动的条件是,当前1的位置+1不等于

下一个1的位置,也就是前面是空的。然后就这样啊....

高质量的模拟确实应该学习一下...

代码:


#include<cstdio>
using namespace std;
int n,k,j;
int a[];
int main(){
scanf("%d%d",&n,&k);
for(int i=;i<=k;i++)a[i]=i;
for(int i=;i<=n;i++){
j=;
while(){
a[j]++;
if(a[j]!=a[j+])break;
a[j]=j;
j++;
}
}
j=k;
for(int i=a[k];i>=;i--){
if(a[j]==i)printf(""),j--;
else printf("");
}
return ;
}

 

洛谷 P3048 [USACO12FEB]牛的IDCow IDs的更多相关文章

  1. 洛谷P3048 [USACO12FEB]牛的IDCow IDs

    P3048 [USACO12FEB]牛的IDCow IDs 12通过 67提交 题目提供者lin_toto 标签USACO2012 难度普及/提高- 时空限制1s / 128MB 提交  讨论  题解 ...

  2. LUOGU P3048 [USACO12FEB]牛的IDCow IDs(组合数)

    传送门 解题思路 组合数学.首先肯定是要先枚举位数,假如枚举到第\(i\)位.我们可以把第一位固定,然后那么后面的随意放\(1\),个数就为\(C_{i-1}^{k-1}\).然后每次枚举时如果方案\ ...

  3. 洛谷P3045 [USACO12FEB]牛券Cow Coupons

    P3045 [USACO12FEB]牛券Cow Coupons 71通过 248提交 题目提供者洛谷OnlineJudge 标签USACO2012云端 难度提高+/省选- 时空限制1s / 128MB ...

  4. [USACO12FEB]牛的IDCow IDs

    题目描述 Being a secret computer geek, Farmer John labels all of his cows with binary numbers. However, ...

  5. [USACO12FEB]牛的IDCow IDs 一题多解(求二进制中有k个1 ,第n大的数)

    题目: FJ给他的奶牛用二进制进行编号,每个编号恰好包含K 个"1" (1 <= K <= 10),且必须是1开头.FJ按升序编号,第一个编号是由K个"1&q ...

  6. 洛谷 2953 [USACO09OPEN]牛的数字游戏Cow Digit Game

    洛谷 2953 [USACO09OPEN]牛的数字游戏Cow Digit Game 题目描述 Bessie is playing a number game against Farmer John, ...

  7. 洛谷 P3047 [USACO12FEB]附近的牛Nearby Cows

    P3047 [USACO12FEB]附近的牛Nearby Cows 题目描述 Farmer John has noticed that his cows often move between near ...

  8. 洛谷 3029 [USACO11NOV]牛的阵容Cow Lineup

    https://www.luogu.org/problem/show?pid=3029 题目描述 Farmer John has hired a professional photographer t ...

  9. 洛谷P3047 [USACO12FEB]Nearby Cows(树形dp)

    P3047 [USACO12FEB]附近的牛Nearby Cows 题目描述 Farmer John has noticed that his cows often move between near ...

随机推荐

  1. java word导入导出工具类

    package com.shareworx.yjwy.utils; import java.io.InputStream; import java.util.HashMap; import java. ...

  2. $.queue() 与 $.dequeue() -- 队列

    JQuery 运用队列为动画模块服务,但好像它应该有更多用处,我觉得的,那试试就知道咯. 简单的来讲,它就是形成队列和出列, 也就因此可以进行很有规律的回调和延时了呀(暂停感觉有难度),当然这就是后面 ...

  3. STM32F4XX高效驱动篇2 I2C

    说到I2C很多用过STMF10X硬件I2C方式的工程师,都感觉有点头痛.大部分还是使用软件模拟的方式,I2C由于一般的工作频率是400,100KHz.所以在平凡读取,或所读数据量大时,使用这模拟的方式 ...

  4. CSS3动画表单

    在线演示 本地下载

  5. JAVA使用Freemarker生成静态文件中文乱码

    1.指定Configuration编码 Configuration freemarkerCfg = new Configuration(); freemarkerCfg.setEncoding(Loc ...

  6. html文件转换成pdf和word

    1.html文件转成pdf 采用jar包有itext-asian.jar.itextpdf-5.5.5.jar.itext-pdfa-5.5.5.jar.itext-xtra-5.5.5.jar,为了 ...

  7. Android深度探索(卷1)HAL与驱动开发 虚拟环境的安装

    前言: 最近在看<Android深度探索(卷1)HAL与驱动开发>安装随书带的虚拟环境浪费了很多时间,说是虚拟环境的安装倒不如说是虚拟环境的导入,其实没什么技术含量,也没有什么复杂的,只是 ...

  8. eclipse添加删除插件-eclipse marketplace

    源文地址:http://jingyan.baidu.com/article/cdddd41c5c883353cb00e19e.html 在有些版本的eclips上并没有eclipse marketpl ...

  9. Gerrit使用感受

    CodeReivew好工具,可以随业务需求灵活配置权限等.

  10. Spring初学之annotation实现AOP前置通知和后置通知

    实现两个整数的加减乘除,并在每个计算前后打印出日志. ArithmeticCalculator.java: package spring.aop.impl; public interface Arit ...