题目描述
继MIUI8推出手机分身功能之后,MIUI9计划推出一个电话号码分身的功能:首先将电话号码中的每个数字加上8取个位,然后使用对应的大写字母代替 ("ZERO", "ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX", "SEVEN", "EIGHT", "NINE"), 然后随机打乱这些字母,所生成的字符串即为电话号码对应的分身。
#include<iostream>
#include<algorithm>
#include<cstring>
#include<map>
using namespace std;
int main()
{
int n;
int a[10];
string s;
cin>>n;
while(n--)
{
cin>>s;
map<char,int> m;
for(int i=0;i<s.length();++i)
{
m[s[i]]++;
}
for(int i=0;i<10;++i) a[i]=0;
if(m['Z']) //找0
{
a[0]+=m['Z'];
while(m['Z'])
{
m['Z']--;
m['E']--;
m['R']--;
m['O']--;
}
}
if(m['W']) //找2
{
a[2]+=m['W'];
while(m['W'])
{
m['T']--;
m['W']--;
m['O']--;
}
}
if(m['U']) //找4
{
a[4]+=m['U'];
while(m['U'])
{
m['F']--;
m['O']--;
m['U']--;
m['R']--;
}
}
if(m['R']) //找3
{
a[3]+=m['R'];
while(m['R'])
{
m['T']--;
m['H']--;
m['R']--;
m['E']--;
m['E']--;
}
}
if(m['O']) //找1
{
a[1]+=m['O'];
while(m['O'])
{
m['O']--;
m['N']--;
m['E']--;
}
}
if(m['F']) //找5
{
a[5]+=m['F'];
while(m['F'])
{
m['F']--;
m['I']--;
m['V']--;
m['E']--;
}
}
if(m['X']) //找6
{
a[6]+=m['X'];
while(m['X'])
{
m['S']--;
m['I']--;
m['X']--;
}
}
if(m['S']) //找7
{
a[7]+=m['S'];
while(m['S'])
{
m['S']--;
m['E']--;
m['V']--;
m['E']--;
m['N']--;
}
}
if(m['G']) //找8
{
a[8]+=m['G'];
while(m['G'])
{
m['E']--;
m['I']--;
m['G']--;
m['H']--;
m['T']--;
}
}
if(m['I']) //找9
{
a[9]+=m['I'];
while(m['I'])
{
m['N']--;
m['I']--;
m['N']--;
m['E']--;
}
}
for(int i=8;i<=9;++i)
{
for(int j=0;j<a[i];++j)
{
cout<<(i+10-8)%10;
}
}
for(int i=0;i<=7;++i)
{
for(int j=0;j<a[i];++j)
{
cout<<(i+10-8)%10;
}
}
cout<<endl;
}
return 0;
}
/*
*/