4、電話號碼分身
阿新 • • 發佈:2018-12-10
(個人水平有限,請見諒!)
題目描述:
繼MIUI8推出手機分身功能之後,MIUI9計劃推出一個電話號碼分身的功能:首先將電話號碼中的每個數字加上8取個位,然後使用對應的大寫字母代替 (“ZERO”, “ONE”, “TWO”, “THREE”, “FOUR”, “FIVE”, “SIX”, “SEVEN”, “EIGHT”, “NINE”), 然後隨機打亂這些字母,所生成的字串即為電話號碼對應的分身。
輸入描述:
第一行是一個整數T(1 ≤ T ≤ 100)表示測試樣例數;接下來T行,每行給定一個分身後的電話號碼的分身(長度在3到10000之間)。
輸出描述:
輸出T行,分別對應輸入中每行字串對應的分身前的最小電話號碼(允許前導0)。
輸入:
4
EIGHT
ZEROTWOONE
OHWETENRTEO
OHEWTIEGTHENRTEO
輸出:
0
234
345
0345
程式碼示例:
#include <iostream> #include <string> using namespace std; int main() { int E=0, F=0, G=0, H=0, I=0, N=0, O=0, R=0, S=0, T=0, U=0, V=0, W=0, X=0, Z=0; //E013357789,F45,G8,H38,I5689,N1799,O0124,R034,S67,T238,U4,V57,W2,X6,Z0 int num[10] = {0}; int test = 0; string phoneavator = "", phone = ""; cin >> test; for (int ii = 0; ii < test; ii++) { cin >> phoneavator; for (int jj = 0; jj < phoneavator.length(); jj++) { switch(phoneavator[jj]) { case 'E': E++; break; case 'F': F++; break; case 'G': G++; break; case 'H': H++; break; case 'I': I++; break; case 'N': N++; break; case 'O': O++; break; case 'R': R++; break; case 'S': S++; break; case 'T': T++; break; case 'U': U++; break; case 'V': V++; break; case 'W': W++; break; case 'X': X++; break; case 'Z': Z++; break; default: cout << "error" << endl; break; } } //cout<<E<<" "<<F<<" "<<G<<" "<<H<<" "<<I<<" "<<N<<" "<<O<<" "<<R<<" "<<S<<" "<<T<<" "<<U<<" "<<V<<" "<<W<<" "<<X<<" "<<endl; num[0] = Z; num[2] = W; num[4] = U; num[6] = X; num[8] = G; num[3] = H - G; num[5] = F - U; num[7] = S - X; num[1] = O - Z - W - U; num[9] = I + U - F - X - G; for (int kk = 8; kk < 18; kk++) { int time = kk % 10; char number = (kk + 2) % 10 + '0'; if(num[time] != 0) { phone.append(num[time], number); } } cout << phone <<endl; phone = ""; num[10] = {0}; E=0, F=0, G=0, H=0, I=0, N=0, O=0, R=0, S=0, T=0, U=0, V=0, W=0, X=0, Z=0; } }