PAT 1027 Colors in Mars (20分)
阿新 • • 發佈:2020-07-18
題目
題目連結PAT A1027 Colors in Mars (20分)
解題思路
思路01
1 進位制轉換。十進位制轉換為十三進位制
2 如果轉換後是一位前面補充一位0
思路02
根據題目已知,十進位制數字最大為168(對應十三進製為CC),可知轉換為十三進位制後最大為CC,所以轉換後一定是兩位,x/13 x%13(x為十進位制數)
易錯點
當某種顏色轉換為十三進位制後,如果是一位數字,需在前面補充一位0
知識點
1 進位制轉換
2 字串拼接字串
單詞
digit 數字(可數)
decimal 十進位制的;小數
radix 基數;根
Code
Code 01
#include <iostream> #include <algorithm> using namespace std; const int p = 13; /* 十進位制轉十三進位制 */ string convert(int x){ string s; int temp; do{ temp = x%p; if(temp>=10)s+=temp-10+'A'; else s+=temp+'0'; x /= p; }while(x!=0); if(s.length()==1)s.append("0"); reverse(s.begin(),s.end()); return s; } int main(int argc,char * argv[]) { int r,g,b; scanf("%d%d%d",&r,&g,&b); string rs = convert(r); string gs = convert(g); string bs = convert(b); rs.append(gs).append(bs); printf("#%s",rs.c_str()); return 0; }
Code 02
#include <iostream> #include <string> using namespace std; /* 1. char 字元陣列定義初始化 */ int main(int argc,char *argv[]) { char c[14]= {"0123456789ABC"}; int num; cout<<"#"; for(int i=0; i<3; i++) { cin>>num; printf("%c%c",c[num/13],c[num%13]); } return 0; }