在題目錦囊中有提到,咱們可以通過2進製為媒介,達到16轉8的目的。
在學習數電邏輯之後,咱們也都知道, 1位16進製制可以代表4位2進製, 1位8進製可以代表3位二進位制,為此我的**大題思路就出來了,字串儲存,3位16進製制求和入棧輸出表示4位8進製,然後出棧輸出,於是有了我最開始的**。
但是很可惜的是,在評測平台上得的是0分, 我也跟別人試過一些資料,但是測的基本上不是一串f就是一串其他的,反倒是幫人找出來了乙個錯誤,但是自己的錯誤還是沒有找到,曾經還一度認為是我的棧開的不夠大,所以導致的最後資料溢位,不能精確表示。後來請教了c語言吧的女神 幽罹焰#include#include#includeusing namespace std;
int stack[40000];
void transform(string str, int length)
stack[++top] = sum;
}while( stack[top] == 0)
for(int i = top; i >= 0; i--)
cout<>n;
str = new string[n];
for(int i = 0; i < n; i++)
for(int i = 0; i < n; i++)
return 0;
}
我才發現了我的**錯誤地方。錯誤地方就在於偷懶的 printf("%o", stack[i]); 因為我是偷懶的加和, 為此丟失了許多該有的前導0。
而1001轉化之後的正確結果應該是10001。
為此為了修正這個錯誤,我最後還是轉化為了字串, 看當前的數字是否湊夠了 4位,為此有了如下**。
這樣就能使答案正確輸出。#include#include#includeusing namespace std;
int stack[40000];
void transform(string str, int length)
stack[++top] = sum;
}while( stack[top] == 0)
for(int i = top; i >= 0; i--)
cout<>n;
str = new string[n];
for(int i = 0; i < n; i++)
for(int i = 0; i < n; i++)
return 0;
}
藍橋杯 16進製制轉8進製
十萬位16進製制轉8進製 一 概述 在藍橋杯的練習系統解決了一道題 16進製制轉八進位制,乍一看感覺很簡單,然而提交後顯示錯誤好幾遍後才知道它的測試資料裡有乙個十萬位的16進製制數,暈.二 主要思路 根據3個十六進製制為與4個八進位制位一一對應的關係 將目標字串每三個字元一組,轉成十進位制 再直接用...
進製轉換(16轉8)
問題描述 給定n個十六進製制正整數,輸出它們對應的八進位制數。輸入格式 輸入的第一行為乙個正整數n 1 n 10 接下來n行,每行乙個由09 大寫字母af組成的字串,表示要轉換的十六進製制正整數,每個十六進製制數長度不超過100000。輸出格式 輸出n行,每行為輸入對應的八進位制正整數。注意 輸入的...
藍橋杯 基礎訓練 16進製制轉8進製
問題描述 給定n個十六進製制正整數,輸出它們對應的八進位制數。輸入格式 輸入的第一行為乙個正整數n 1 n 10 接下來n行,每行乙個由0 9 大寫字母a f組成的字串,表示要轉換的十六進製制正整數,每個十六進製制數長度不超過100000。輸出格式 輸出n行,每行為輸入對應的八進位制正整數。注意 輸...