1. 程式人生 > >十六進位制轉八進位制 (思維)

十六進位制轉八進位制 (思維)

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