#include <iostream>
#include <cstdio>
#include <string>
#include <memory.h>
using namespace std;
void carry(string &str,int i){
if(str[i]=='Z'+1||str[i]=='z'+1||str[i]=='9'+1){//是否产生进位
char ch;
if(str[i]=='Z'+1)ch='A',str[i]='A';
else if(str[i]=='z'+1)ch='a',str[i]='a';
else ch='1',str[i]='0';
int j=i-1;
//找到左边的字母数字
for(;j>=0;--j)if(isalnum(str[j]))break;
if(j!=-1){//有字母数字,加一,然后判断是否可以进位
str[j]++;
carry(str,j);
}else{
str.insert(str.begin()+i,ch);
}
}
}
int main(){
int t;
scanf("%d",&t);
while (t--)
{
string str;
char buf[120];
int times,i;
scanf("%s %d",buf,×);
str=buf;
while (times--)
{
//判断是否有字母数字
for(i=str.size()-1;i>=0;--i){
if(isalnum(str[i]))break;
}
if(i==-1){//没有字母数字,直接将最右边的字符+1
str[str.size()-1]++;
}else{
str[i]++;
carry(str,i);
}
printf("%s\n",str.c_str());
}
printf("\n");
}
return 0;
}
UVA 3490 - String Successor
最新推荐文章于 2017-10-03 20:10:00 发布