zcmu-2158
2158: G.ly的進(jìn)制轉(zhuǎn)換
Time Limit:?1 Sec??Memory Limit:?128 MBSubmit:?77??Solved:?29
[Submit][Status][Web Board]
Description
ly去年有門課叫C語言基礎(chǔ),今年的期末考試上有一道題目是"將16進(jìn)制的數(shù)字39轉(zhuǎn)換成八進(jìn)制",但是ly并不會算...
在去年考完試之后,發(fā)奮學(xué)習(xí),并且只學(xué)習(xí)怎么把16進(jìn)制的數(shù)字轉(zhuǎn)換成八進(jìn)制...
今年的java考試剛好也有這個問題,但是ly缺忘了怎么算...所以你能幫她嗎?
Input
多組數(shù)據(jù),第一行一個正整數(shù)T表示有T次詢問(T<=10)
接下來n行,每行一個由0~9、大寫字母A~F組成的字符串,表示要轉(zhuǎn)換的十六進(jìn)制正整數(shù)
每個十六進(jìn)制數(shù)長度不超過100000。
Output
輸出n行,每行為輸入對應(yīng)的八進(jìn)制正整數(shù)。
Sample Input
139Sample Output
71HINT
輸入的十六進(jìn)制數(shù)不會有前導(dǎo)0,比如012A。輸出的八進(jìn)制數(shù)也不能有前導(dǎo)0。
解析:16進(jìn)制每個數(shù)為4個2進(jìn)制為,8進(jìn)制每個數(shù)位3個2進(jìn)制位。所以就可以得到我們先求出16進(jìn)制的全部2進(jìn)制位,然后每3個數(shù)合成一個8進(jìn)制位。 #include<bits/stdc++.h> using namespace std; const int maxn=100000+10; char a[17]="0123456789ABCDEF"; int main() {char s[maxn];int t;scanf("%d",&t);while(t--){scanf("%s",s);int l=strlen(s);int len=l*4%3;string ss;if(len==0)ss+="";else if(len==1)ss+="00";else ss+="0";//cout<<ss<<endl;for(int i=0; i<l; i++){switch(s[i]){case '0':ss+="0000";break;case '1':ss+="0001";break;case '2':ss+="0010";break;case '3':ss+="0011";break;case '4':ss+="0100";break;case '5':ss+="0101";break;case '6':ss+="0110";break;case '7':ss+="0111";break;case '8':ss+="1000";break;case '9':ss+="1001";break;case 'A':ss+="1010";break;case 'B':ss+="1011";break;case 'C':ss+="1100";break;case 'D':ss+="1101";break;case 'E':ss+="1110";break;case 'F':ss+="1111";break;//default :break;}}for(int i=0; i<ss.length(); i+=3){if(ss[i]=='0'&&ss[i+1]=='0'&&ss[i+2]=='0'){if(i==0)continue;else printf("0");}else if(ss[i]=='0'&&ss[i+1]=='0'&&ss[i+2]=='1')printf("1");else if(ss[i]=='0'&&ss[i+1]=='1'&&ss[i+2]=='0')printf("2");else if(ss[i]=='0'&&ss[i+1]=='1'&&ss[i+2]=='1')printf("3");else if(ss[i]=='1'&&ss[i+1]=='0'&&ss[i+2]=='0')printf("4");else if(ss[i]=='1'&&ss[i+1]=='0'&&ss[i+2]=='1')printf("5");else if(ss[i]=='1'&&ss[i+1]=='1'&&ss[i+2]=='0')printf("6");else if(ss[i]=='1'&&ss[i+1]=='1'&&ss[i+2]=='1')printf("7");}puts("");}return 0; }總結(jié)
- 上一篇: zcmu-2153(拓扑排序+优先队列)
- 下一篇: Mysql 连接的使用