博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
K-th string
阅读量:6138 次
发布时间:2019-06-21

本文共 2222 字,大约阅读时间需要 7 分钟。

这两天参加了hihocoder上的小竞赛,下面把自己做的记录一下!(最痛心的是,开始竟然把main函数,写成了mian,浪费了将近一个小时时间,伤不起啊)

Description

Consider a string set that each of them consists of {0, 1} only. All strings in the set have the same number of 0s and 1s. Write a program to find and output the K-th string according to the dictionary order. If such a string doesn’t exist, or the input is not valid, please output “Impossible”. For example, if we have two ‘0’s and two ‘1’s, we will have a set with 6 different strings, {0011, 0101, 0110, 1001, 1010, 1100}, and the 4th string is 1001.

Input

The first line of the input file contains a single integer t (1 ≤ t ≤ 10000), the number of test cases, followed by the input data for each test case.

Each test case is 3 integers separated by blank space: N, M(2 <= N + M <= 33 and N , M >= 0), K(1 <= K <= 1000000000). N stands for the number of ‘0’s, M stands for the number of ‘1’s, and K stands for the K-th of string in the set that needs to be printed as output.

Output

For each case, print exactly one line. If the string exists, please print it, otherwise print “Impossible”.

 

样例输入

32 2 22 2 74 7 47

样例输出

0101Impossible01010111011

这里给出我的答案

思路: 计算由N个0和M个1组成的数的最小值和最大值,然后判断从最小值开始,计算每个数包含一个的个数,到第K的时候,再将其转为包含N个0,和M个1的字符串,输出。(这是暂时想出的方法,以后会仔细思考一下,如果你有不同的方法,欢迎交流

#include
#include
#include
#include
using namespace std;int fac(int n){ if(n == 1) return 1; else return n*fac(n-1);}int numOne(int value){ int res = 0; while(value) { if(value % 2 == 1) res++; value = value /2; } return res;}string outObj(int value,int len){ string res = ""; while(value) { if(value % 2 == 1) res.append("1"); else res.append("0"); value = value / 2; } reverse(res.begin(),res.end()); string app=""; for(int i=0; i < len - res.size(); i++) app.append("0"); app.append(res); return app;}int main(){ int T; cin>>T; int M,N,K; vector
result(T); int minValue,maxValue; for(int i=0; i
>N>>M>>K; int len = M + N; minValue=0; maxValue=0; if(fac(N+M)/(fac(N) * fac(M)) < K) { cout<<"Impossible"<

 

转载地址:http://eikya.baihongyu.com/

你可能感兴趣的文章
5月第一周几个要处理的问题
查看>>
在CentOS 中yum 安装Tomcat 6
查看>>
POJ 1088: 滑雪
查看>>
树莓派用Python写几个简单程序5:用socket传图像
查看>>
在QNAP NAS上安装pfSense
查看>>
以太网帧结构
查看>>
EditPlus 配置 Java & C/CPP 开发环境
查看>>
细谈Quercus----Java之PHP框架
查看>>
QML与C++交互:登陆界面设计
查看>>
echo命令选项及设置文字颜色显示详细参数
查看>>
java枚举类型的用法
查看>>
skynet学习一
查看>>
迪普应用防火墙产品线
查看>>
mysql-5.7.21版本一直报错ERROR 1067 (42000)!
查看>>
maven自动建立目录
查看>>
收款业务流程图怎样画
查看>>
C++算法之线性结构处理的代码
查看>>
一个PHP混淆后门的分析
查看>>
Linux之DNS服务器
查看>>
在 Android Emulator 中开发 LKM 程序
查看>>