《算法筆記》3.5小節(jié)——入門(mén)模擬->進(jìn)制轉(zhuǎn)換

@[TOC]
CSDN鏈接:https://blog.csdn.net/qq_34767784/category_8813365.html

Contest100000579 - 《算法筆記》3.5小節(jié)——入門(mén)模擬->進(jìn)制轉(zhuǎn)換

例題

PATB1022

https://pintia.cn/problem-sets/994805260223102976/problems/994805299301433344
題目:
輸入兩個(gè)非負(fù) 10 進(jìn)制整數(shù) A 和 B (≤2
?30
?? ?1),輸出 A+B 的 D (1<D≤10)進(jìn)制數(shù)赏胚。

輸入格式:
輸入在一行中依次給出 3 個(gè)整數(shù) A分预、B 和 D揖庄。

輸出格式:
輸出 A+B 的 D 進(jìn)制數(shù)褐荷。

輸入樣例:
123 456 8

輸出樣例:
1103

//1022 D進(jìn)制的A+B
題析:注意除基取余法應(yīng)用译柏,特別注意標(biāo)注的倒敘輸出從i-1開(kāi)始
以及循環(huán)用do…while(會(huì)出現(xiàn)arr[0]=0情況)
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
void dec2d(int num,int d)
{
    int arr[50];int i=0;
    do
    {
        arr[i++]=num%d;
        num/=d;
    }while(num != 0);
    for(int j=i-1;j>=0;j--)//從i-1開(kāi)始而不是i,因?yàn)閍rr[i]==0 
    {
        printf("%d",arr[j]);
    }
}

int main()
{
    int a,b,d;
    while(scanf("%d%d%d",&a,&b,&d) != EOF)
    {
        int sum=a+b;
        dec2d(sum,d);
    }
    return 0;
}

Codeup練習(xí)題:

http://codeup.cn/contest.php?cid=100000579

1941 Problem A 又一版 A+B

http://codeup.cn/problem.php?cid=100000579&pid=0

題析:注意事項(xiàng)見(jiàn)注釋?zhuān)€是有坑的包括while(num)與while(num!=0)的區(qū)別還是不清楚

//1941ProblemA又一版 A+B
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;

void dec2m(long long num,int m)
{
    int arr[31];
    int i=0;
    do
    {
        arr[i++]=num%m;
        num/=m;
    }while(num != 0);//此處大坑,while(num)顯示錯(cuò)誤50%埃跷?接癌? 
    for(int j=i-1;j>=0;j--)//此處注意從i-1開(kāi)始心赶,因?yàn)樽罱K一定是arr[i]==0, 
    {                   //因?yàn)槭莇o...while(區(qū)別于while) ,因?yàn)橛刑厥馇闆r(num==0)時(shí) 
        printf("%d",arr[j]);
    }
    
}
int main()
{
    long long a,b;
    int m;
    while(scanf("%d%lld%lld",&m,&a,&b)!=EOF)
    {
        if(m==0)
            break;
        dec2m(a+b,m);
        printf("\n");
    }
    return 0;
}


1942 Problem B 數(shù)制轉(zhuǎn)換

http://codeup.cn/problem.php?cid=100000579&pid=1

ASCII表

題析:剛開(kāi)始沒(méi)弄清題意缺猛,后來(lái)參考大佬博客
https://blog.csdn.net/privilage/article/details/79959279
主要是字符的處理(將不同進(jìn)制數(shù)作為字符數(shù)組缨叫,然后轉(zhuǎn)換為10進(jìn)制)+除基取余法轉(zhuǎn)換的應(yīng)用
//1942ProblemB數(shù)制轉(zhuǎn)換 
#include<iostream>
#include <cstdio>
#include <cstring>
using namespace std;

int main()
{
    long a,b;
    char num[100];
    char ans[100];
    long y=0;
    //把n進(jìn)制轉(zhuǎn)換成十進(jìn)制 
    while(scanf("%ld%s%ld",&a, &num, &b) != EOF)
    {
        long sum=0;
        int len = strlen(num);
        //將a進(jìn)制轉(zhuǎn)換為10進(jìn)制
        for(int i=0;i<len;i++)//轉(zhuǎn)換,需熟悉ASCII表 
        {
            if(num[i]>='a')//小寫(xiě)字母轉(zhuǎn)化為大寫(xiě)字母待后續(xù)處理
            {
                num[i]=num[i]-32;   
            }   
            //int temp = (num[i] >= 'A'?num[i]-'A'+10:num[i]-'0');
            int temp;
            if(num[i]>='A')
            {
                temp = num[i]-'A'+10;
            }
            else
            {
                temp = num[i]-'0';
            }
            sum = sum*a + temp; 
        } 
        //將10進(jìn)制轉(zhuǎn)換為b進(jìn)制枯夜,除基取余法
         int count=0;
         do
         {
            if(sum%b<=9)
            {
                ans[count++] = sum%b+'0';
            }
            else
            {
                ans[count++] = sum%b+'A'-10;
            }
            sum/=b;
         }while(sum != 0);
         //倒敘輸出
         for(int j=count-1;j>=0;j--)
         {
            printf("%c",ans[j]);    
         } 
         printf("\n");
    }   
    return 0;
}


1943 Problem C 進(jìn)制轉(zhuǎn)換

http://codeup.cn/problem.php?cid=100000579&pid=2



題析:此題經(jīng)典弯汰,見(jiàn)大神解析
https://blog.csdn.net/ActionBeam/article/details/88355452

//1943ProblemC進(jìn)制轉(zhuǎn)換
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
char mod(char num[])//輾轉(zhuǎn)相除法求每一個(gè)余數(shù) 
{
    int len = strlen(num);
    int rem=0,div=0;
    for(int i=0;i<len;i++)//注意余數(shù)為1時(shí)要乘以10保留到下一位作為被除數(shù) 
    {
        div = ((num[i]-'0')+rem*10) / 2;
        rem = ((num[i]-'0')+rem*10) % 2;
        num[i] = div + '0';//將每一位對(duì)應(yīng)的商放回?cái)?shù)組對(duì)應(yīng)的位上
    }
    return rem+'0';//余數(shù)轉(zhuǎn)換為字符返回 
}

bool isEmpty(char num[])//判斷輾轉(zhuǎn)相除法結(jié)束標(biāo)志 ,即是否待轉(zhuǎn)換數(shù)數(shù)組全0 
{
    int len=strlen(num);
    for(int i=0;i<len;i++)
    {
        if(num[i]!='0')//注意為字符‘0’ 
        {
            return 0;   
        }   
    }   
    return 1;
} 

char numDec[35];
char numBin[205]; 
int main()
{
    while(scanf("%s",numDec) != EOF)
    {
        int count=0;
        int len=strlen(numDec);
        do
        {
            numBin[count++]=mod(numDec);
        //  cout<<"dadad"<<endl;
        }while(!isEmpty(numDec));
        numBin[count]='\0';
        for(int i=count-1;i>=0;i--)//除基取余法的倒敘輸出 
        {
            printf("%c",numBin[i]);
        }
        printf("\n");
        
    }
    return 0;
}


1944 Problem D 八進(jìn)制

http://codeup.cn/problem.php?cid=100000579&pid=3

題析:題目簡(jiǎn)單湖雹,運(yùn)用經(jīng)典的除基取余法即可

//1944ProblemD八進(jìn)制 
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int octal[105];
int main()
{
    int N;
    while(scanf("%d",&N) != EOF)
    {
        int count=0;
        do
        {
            octal[count++]=N%8;
            N/=8;
        }while(N != 0);
        for(int j=count-1;j>=0;j--)
        {
            printf("%d",octal[j]);
        }
        printf("\n");
    }
    return 0;
}


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市曙搬,隨后出現(xiàn)的幾起案子摔吏,更是在濱河造成了極大的恐慌,老刑警劉巖纵装,帶你破解...
    沈念sama閱讀 223,207評(píng)論 6 521
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件征讲,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡橡娄,警方通過(guò)查閱死者的電腦和手機(jī)诗箍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,455評(píng)論 3 400
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)挽唉,“玉大人滤祖,你說(shuō)我怎么就攤上這事∑孔眩” “怎么了匠童?”我有些...
    開(kāi)封第一講書(shū)人閱讀 170,031評(píng)論 0 366
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)塑顺。 經(jīng)常有香客問(wèn)我汤求,道長(zhǎng),這世上最難降的妖魔是什么严拒? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,334評(píng)論 1 300
  • 正文 為了忘掉前任扬绪,我火速辦了婚禮,結(jié)果婚禮上裤唠,老公的妹妹穿的比我還像新娘挤牛。我一直安慰自己,他們只是感情好巧骚,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,322評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布赊颠。 她就那樣靜靜地躺著格二,像睡著了一般。 火紅的嫁衣襯著肌膚如雪竣蹦。 梳的紋絲不亂的頭發(fā)上顶猜,一...
    開(kāi)封第一講書(shū)人閱讀 52,895評(píng)論 1 314
  • 那天,我揣著相機(jī)與錄音痘括,去河邊找鬼长窄。 笑死,一個(gè)胖子當(dāng)著我的面吹牛纲菌,可吹牛的內(nèi)容都是我干的挠日。 我是一名探鬼主播,決...
    沈念sama閱讀 41,300評(píng)論 3 424
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼翰舌,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼嚣潜!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起椅贱,我...
    開(kāi)封第一講書(shū)人閱讀 40,264評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤懂算,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后庇麦,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體计技,經(jīng)...
    沈念sama閱讀 46,784評(píng)論 1 321
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,870評(píng)論 3 343
  • 正文 我和宋清朗相戀三年山橄,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了垮媒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,989評(píng)論 1 354
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡航棱,死狀恐怖睡雇,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情丧诺,我是刑警寧澤入桂,帶...
    沈念sama閱讀 36,649評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站驳阎,受9級(jí)特大地震影響抗愁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜呵晚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,331評(píng)論 3 336
  • 文/蒙蒙 一蜘腌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧饵隙,春花似錦撮珠、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,814評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)勺届。三九已至,卻和暖如春娶耍,著一層夾襖步出監(jiān)牢的瞬間免姿,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,940評(píng)論 1 275
  • 我被黑心中介騙來(lái)泰國(guó)打工榕酒, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留胚膊,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,452評(píng)論 3 379
  • 正文 我出身青樓想鹰,卻偏偏與公主長(zhǎng)得像紊婉,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子辑舷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,995評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • 在C語(yǔ)言中,五種基本數(shù)據(jù)類(lèi)型存儲(chǔ)空間長(zhǎng)度的排列順序是: A)char B)char=int<=float C)ch...
    夏天再來(lái)閱讀 3,352評(píng)論 0 2
  • 相信每一位玩ACM程序設(shè)計(jì)競(jìng)賽的同學(xué)來(lái)說(shuō)何缓,都有一個(gè)從入門(mén)到精通的過(guò)程株汉,而且分享他們經(jīng)驗(yàn)的時(shí)候,見(jiàn)到最多的就是一種合...
    FinlayLiu閱讀 5,409評(píng)論 6 182
  • 個(gè)人學(xué)習(xí)批處理的初衷來(lái)源于實(shí)際工作歌殃;在某個(gè)迭代版本有個(gè)BS(安卓手游模擬器)大需求,從而在測(cè)試過(guò)程中就重復(fù)涉及到...
    Luckykailiu閱讀 4,734評(píng)論 0 11
  • 題目鏈接http://acm.hdu.edu.cn/showproblem.php?pid=2051 Bitset...
    Rimuru1314閱讀 914評(píng)論 0 0
  • 平平自然沒(méi)答應(yīng)渣男的求婚蝙云,但是也憑著老好人的本分氓皱,也沒(méi)拒絕他,自己還是太善良啊勃刨,而且平平也實(shí)在是想弄明白辟邪的古怪...
    微微故事閱讀 208評(píng)論 0 0