日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

zcmu-2158

發布時間:2025/3/15 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 zcmu-2158 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2158: G.ly的進制轉換

Time Limit:?1 Sec??Memory Limit:?128 MB
Submit:?77??Solved:?29
[Submit][Status][Web Board]

Description

ly去年有門課叫C語言基礎,今年的期末考試上有一道題目是"將16進制的數字39轉換成八進制",但是ly并不會算...
在去年考完試之后,發奮學習,并且只學習怎么把16進制的數字轉換成八進制...
今年的java考試剛好也有這個問題,但是ly缺忘了怎么算...所以你能幫她嗎?

Input

多組數據,第一行一個正整數T表示有T次詢問(T<=10)
接下來n行,每行一個由0~9、大寫字母A~F組成的字符串,表示要轉換的十六進制正整數
每個十六進制數長度不超過100000。

Output

輸出n行,每行為輸入對應的八進制正整數。

Sample Input

139

Sample Output

71

HINT

輸入的十六進制數不會有前導0,比如012A。輸出的八進制數也不能有前導0。

解析:16進制每個數為4個2進制為,8進制每個數位3個2進制位。所以就可以得到我們先求出16進制的全部2進制位,然后每3個數合成一個8進制位。 #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; }

總結

以上是生活随笔為你收集整理的zcmu-2158的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。