1. 程式人生 > >4、電話號碼分身

4、電話號碼分身

(個人水平有限,請見諒!)

題目描述:

繼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;
    }
}