【pat乙級】換個格式輸出整數

(pat乙級1006)

讓我們用字母 B 來表示“百”、字母 S 表示“十”,用 12…n 來表示不爲零的個位數字 n(<10),換個格式來輸出任一個不超過 3 位的正整數。例如 234 應該被輸出爲 BBSSS1234,因爲它有 2 個“百”、3 個“十”、以及個位的 4。

輸入格式:
每個測試輸入包含 1 個測試用例,給出正整數 n(<1000)。

輸出格式:
每個測試用例的輸出佔一行,用規定的格式輸出 n。

輸入樣例 1:
234

輸出樣例 1:
BBSSS1234

輸入樣例 2:
23

輸出樣例 2:
SS123

c++代碼:

#include<iostream>
#include<cstring>
#include<algorithm> 
using namespace std;
string word[10]={"0","1","2","3","4","5","6","7","8","9"};
int main(){ 
    int n,a=0;
    cin>>n;
    string s="";
    int num=0;  //記錄當前是哪一位(個-->十-->百)
    while(n!=0){   
        a=n%10;   //得到當前n的個位數
        if(num==0){   //是個位
            for(int i=a-1;i>=0;i--)s=s+word[i+1];num++;
        }
        else if(num==1){   //是十位
            for(int i=0;i<a;i++)s=s+"S";num++;
        }
        else if(num==2){   //是百位
            for(int i=0;i<a;i++)s=s+"B";num++;
        }
        n=n/10;
    }
    reverse(s.begin(),s.end());   //結果字符串反向
    cout<<s;
    return 0;
} 

注意:
因爲是不斷n/10從n的個位向前依次得到n的每一位,所以結果字符串是反向的。調用alogrithm下的reverse(s.begin(),s.end())把字符串s反向後輸出。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章