十六進位制轉八進位制 (思維)
Problem Description:
給定n個十六進位制正整數,輸出它們對應的八進位制數。
Input:
輸入的第一行為一個正整數n (1<=n<=10)。
接下來n行,每行一個由0~9、大寫字母A~F組成的字串,表示要轉換的十六進位制正整數,每個十六進位制數長度不超過100000。
Output:
輸出n行,每行為輸入對應的八進位制正整數。
【注意】
輸入的十六進位制數不會有前導0,比如012A。
輸出的八進位制數也不能有前導0。
Sample Input:
2
39
123ABC
Sample Output:
71
4435274
坑:這道題轉化成十進位制容易wa,我轉化成十進位制提交幾遍死活不對,最後我認輸,轉化成二進位制做的,提交才AK
My DaiMa:
#include <iostream> #include<algorithm> #include<stdio.h> #include<queue> #include<string.h> #include<math.h> using namespace std; typedef long long ll; int binary[400005]; int main() { int t; char ch[100005]; cin >> t; while(t--) { cin >> ch;///利用字串輸入十六進位制的數 int len = strlen(ch); int k = 0; for(int i = len-1; i >= 0; i--)///十六進位制轉化成二進位制 { int x; if(isdigit(ch[i]))///函式isdigit()判斷字元是否為數字 x = ch[i] - '0'; else x = ch[i] - 'A' + 10; for(int j = 1; j <= 4; j++) { binary[k++] = x%2; x /= 2; } } int octal[200005] = {0}; k = 0; for(int i = 0; i < 4*len; i += 3)///二進位制轉化成八進位制 { for(int j = 0; j < 3; j++) { if(i+j < 4*len) octal[k] += binary[i+j] * pow(2,j); } k++; } for(int i = k-1; i >= 0; i--)///防止前導0 { if(octal[i] != 0) { k = i; break; } } for(int i = k; i >= 0; i--) cout << octal[i]; cout << endl; } }
相關推薦
藍橋杯: 基礎練習 十六進位制轉八進位制
問題描述 給定n個十六進位制正整數,輸出它們對應的八進位制數。 輸入格式 輸入的第一行為一個正整數n (1<=n<=10)。 接下來n行,每行一個由0~9、大寫字母A~F組成的字串,表示要轉換的十六進位制正整數,每個十六進位制數長度不超過100000。 輸出格式 輸出n行,每行
藍橋杯十六進位制轉八進位制
問題描述 給定n個十六進位制正整數,輸出它們對應的八進位制數。輸入格式 輸入的第一行為一個正整數n (1<=n<=10)。 接下來n行,每行一個由0~9、大寫字母A~F組成的字串,表示要轉換的十六進位制正整數,每個十六進位制數長度不超過100000。輸出格式 輸出n行,每行為輸入對應的八進
藍橋杯 基礎練習 十六進位制轉八進位制
基礎練習 十六進位制轉八進位制 時間限制:1.0s 記憶體限制:512.0MB 問題描述 給定n個十六進位制正整數,輸出它們對應的八進位制數。輸入格式
p1102 十六進位制轉八進位制
題目 描述 Description 輸入一個不超過100,000位的16進位制數,請轉換成8進位制數。 注:16進位制數中,字母0-9還對應表示數字0-9,字母"A"(大寫)表示10,"B"表示11,…"F"表示15. 比如:16進位制數A10B表示的10進位制數是:1016^
十六進位制轉八進位制
問題描述 給定n個十六進位制正整數,輸出它們對應的八進位制數。 輸入格式 輸入的第一行為一個正整數n (1<=n<=10)。 接下來n行,每行一個由0~9、大寫字母A~F組成的字串,表示要轉換的十六進位制正整數,每個十六進位制數長度不
十六進位制轉八進位制的快捷方法——巧用格式化輸入輸出
最近刷題的時候遇到一個基礎題,就是將16進位制數轉為8進位制數。咋一看極其簡單,用二進位制做中介即可,簡單規劃了一下就開始動手了。 問題描述 給定n個十六進位制正整數,輸出它們對應的八進位制數。輸入格式 輸入的第一行為一個正整數n (1<=n<=10)。 接下來n行,每行一個由0~
十六進位制轉八進位制兩種方法
#include "stdafx.h" #include <iostream> #include <string> using namespace std; int main() { int n=0; cin >> n; str
藍橋杯 基礎練習 十六進位制轉八進位制
基礎練習 十六進位制轉八進位制 時間限制:1.0s 記憶體限制:512.0MB 問題描述 給定n個十六進位制正整數,輸出它們對應的八進位制數。輸入格式 輸入的第一行為一個正整數n (1<=n<=10)。 接下來n行,每行一個由0~
藍橋杯(java):特殊迴文數,十進位制轉十六進位制,十六進位制轉十進位制,十六進位制轉八進位制,數列排序
人生不易,生活無趣。一起來找點樂子吧。 特殊迴文數: 問題描述 123321是一個非常特殊的數,它從左邊讀和從右邊讀是一樣的。 輸入一個正整數n, 程式設計求所有這樣的五位和六位十進位制數,滿足各位數字之和等於n 。 輸入格式 輸入一行,包
BASIC-12 基礎練習 十六進位制轉八進位制 (c++)兩種解法,轉換2進位制或10進位制。
基礎練習 十六進位制轉八進位制 時間限制:1.0s 記憶體限制:512.0MB 錦囊1 使用二進位制。 錦囊2 先把十六進位制轉成二進位制,每位十六進位制正好
十六進位制轉八進位制 (思維)
Problem Description: 給定n個十六進位制正整數,輸出它們對應的八進位制數。 Input: 輸入的第一行為一個正整數n (1<=n<=10)。 接下來n行,每行一個由0~9、大寫字母A~F組成的字串,表示要轉換的十六進位制正整數,每個
藍橋杯題解-十六進位制轉八進位制-BASIC-12
原題地址:十六進位制轉八進位制 問題描述 給定n個十六進位制正整數,輸出它們對應的八進位制數。 輸入格式 輸入的第一行為一個正整數n (1<=n<=10)。 接下來n行,每行一個由09、大寫字母AF組成的字串,表示要轉換的十六進位制正整數,每個十六進位制數長度
藍橋杯:BASIC-12 十六進位制轉八進位制
問題描述: 給定n個十六進位制正整數,輸出它們對應的八進位制數。 輸入格式: 輸入的第一行為一個正整數n (1<=n<=10)。 接下來n行,每行一個由0~9、大寫字母A~F組成的字串,表示要轉換的十六進位制正整數,每個十六進位制數長度不超過100000。 輸出格式:
藍橋杯:十六進位制轉八進位制的高效演算法
總算是在提交了11次都錯誤之後,第12次過了。也是無語。現在的演算法,按照藍橋杯系統給的10個測試數,顯示耗時31ms,記憶體佔用3.589MB。 問題描述 給定n個十六進位制正整數,輸出它們對應的八進位制數。 輸入格式 輸入的第一行為一個正整數n (1<
2016藍橋杯假期任務之《十六進位制轉八進位制》
問題描述 給定n個十六進位制正整數,輸出它們對應的八進位制數。輸入格式 輸入的第一行為一個正整數n (1<=n<=10)。 接下來n行,每行一個由0~9、大寫字母A~F組成的字串,表示要轉換的十六進位制正整數,每個十六進位制數長度不超過100000。輸出格
藍橋杯 基礎練習 十六進位制轉八進位制(5)超長字串處理
基礎練習 十六進位制轉八進位制 時間限制:1.0s 記憶體限制:512.0MB 問題描述 給定n個十六進位制正整數,輸出它們對應的八進位制數。輸入格式 輸入的第一行為一個正整數n (1<=n<=10)。 接下來n行,每行一個由
藍橋杯-- 基礎練習 十六進位制轉八進位制(大數操作)
基礎練習 十六進位制轉八進位制 時間限制:1.0s 記憶體限制:512.0MB 問題描述 給定n個十六進位制正整數,輸出它們對應的八進位制數。 輸入格式 輸入的第一行為一個正整數n (1<=n<=10)。 接下來n
藍橋杯 練習 Java 十六進位制轉八進位制
第一次寫部落格,有不足之處還請大家多指正 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = n
基礎練習-十六進位制轉八進位制
浪費了“黃金五年”的Java程式設計師,還有救嗎? >>>
藍橋杯 基礎練習 BASIC-12 十六進制轉八進制
info div for 限制 class 輸入 字符 字母 res 基礎練習 十六進制轉八進制 時間限制:1.0s 內存限制:512.0MB 問題描述 給定n個十六進制正整數,輸出它們對應的八進制數。輸入格式 輸入的第一行為一個正整數n (1<=n