GYM 101086 D.Secure but True(水~)
2017-03-23 15:32
260 查看
Description
合法串为只由镜面对称的字符{‘A’,’H’,’I’,’M’,’O’,’T’,’U’,’V’,’W’,’X’,’Y’}组成,把所有合法串首先按长度升序排,相同长度按字典序升序排,给出一个合法串,求按顺序在这个串后面第k个合法串
Input
第一行一整数T表示用例组数,每组用例输入一整数k和一字符串s(1<=T<=256,1<=k<=1e9,1<=|s|><=1e3)
Output
对于每组用例,输出s后第k个字符串
Sample Input
4
2 M
4577 ATM
491 AI
132 A
Sample Output
T
ITMO
MAX
AAA
Solution
将串反转后可以看做一个11进制的数字,首先判s距长度为|s|+1的第一个串还差多少,如果k比这个差值大就先补成|s|+1个A,然后进行同样的步骤,如果不够那就从最低位开始进位即可
Code
合法串为只由镜面对称的字符{‘A’,’H’,’I’,’M’,’O’,’T’,’U’,’V’,’W’,’X’,’Y’}组成,把所有合法串首先按长度升序排,相同长度按字典序升序排,给出一个合法串,求按顺序在这个串后面第k个合法串
Input
第一行一整数T表示用例组数,每组用例输入一整数k和一字符串s(1<=T<=256,1<=k<=1e9,1<=|s|><=1e3)
Output
对于每组用例,输出s后第k个字符串
Sample Input
4
2 M
4577 ATM
491 AI
132 A
Sample Output
T
ITMO
MAX
AAA
Solution
将串反转后可以看做一个11进制的数字,首先判s距长度为|s|+1的第一个串还差多少,如果k比这个差值大就先补成|s|+1个A,然后进行同样的步骤,如果不够那就从最低位开始进位即可
Code
#include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #include<cmath> #include<vector> #include<queue> #include<map> #include<set> #include<ctime> using namespace std; typedef long long ll; #define INF 0x3f3f3f3f #define maxn 1111 char c[]={'A','H','I','M','O','T','U','V','W','X','Y'},s[maxn]; int T,k,n,a[111]; void solve() { ll temp=0; int flag=0; for(int i=n-1;i>=0;i--) { temp=11ll*temp+10-a[s[i]]; if(temp>=k) { flag=1; break; } } if(!flag) { k-=temp+1; n++; for(int i=0;i<n;i++)s[i]='A'; solve(); } else { int up=0; for(int i=0;i<n;i++) { up+=a[s[i]]+k%11; s[i]=c[up%11]; up/=11,k/=11; } for(int i=n-1;i>=0;i--)printf("%c",s[i]); printf("\n"); } } int main() { for(int i=0;i<11;i++)a[c[i]]=i; scanf("%d",&T); while(T--) { scanf("%d %s",&k,s); n=strlen(s); for(int i=0,j=n-1;i<j;i++,j--)swap(s[i],s[j]); solve(); } return 0; }
相关文章推荐
- FZU 1171 Hard to Believe, but True!
- GYM 101086 F.Hey JUDgE(枚举)
- poj 2572 Hard to Believe, but True!(字符串)
- fzu 1171 Hard to Believe, but True!
- 今天碰到一个 C++ from C#: C++ function (in a DLL) returning false, but C# thinks it's true! 惊呆了!
- fzu 1171 Hard to Believe, but True!
- postfix-3.1.1编译安装成功, 启动的时候警报:postfix: warning: smtputf8_enable is true, but EAI support is not compi
- ACM篇:POJ 2572 -- Hard to Believe, But True!
- GYM 101086 G.Paradise City(水~)
- GYM 101086 H.Another Square in the Floor(水~)
- Exceeded memory limit for $group, but didn't allow external sort. Pass allowDiskUse:true to opt in.
- GYM 101086 J.Smooth Developer(dfs)
- 解决android - Why does use of multiDexEnabled (true) allow the app to build but constantly crash?
- Hard to Believe, but True!(大数加法的模板和atoi()的应用)
- GYM 101086 K.Betrayed(树形DP+概率DP)
- pip安装模块警告InsecurePlatformWarning: A true SSLContext object is not available.
- GYM 101086 L.Chance(水~)
- Hard to Believe, but True!
- GYM 101086 M.ACPC Headquarters : AASTMT (Stairway to Heaven)(map)
- ZOJ1969-Hard to Believe, but True!