zoukankan      html  css  js  c++  java
  • 基础练习 十六进制转八进制

      基础练习 十六进制转八进制  
    时间限制:1.0s   内存限制:512.0MB
          
    问题描述
      给定n个十六进制正整数,输出它们对应的八进制数。

    输入格式
      输入的第一行为一个正整数n (1<=n<=10)。
      接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。

    输出格式
      输出n行,每行为输入对应的八进制正整数。

      【注意
      输入的十六进制数不会有前导0,比如012A。
      输出的八进制数也不能有前导0。

    样例输入
      2
      39
      123ABC

    样例输出
      71
      4435274

      提示
      先将十六进制数转换成某进制数,再由某进制数转换成八进制。
     
    ------------------
    没有通过,  测试的数据有点变态,,
    附上测试数据:
    https://yunpan.cn/cY9pIrLEKFw4f  访问密码 d4b4
    -------------------

    package 十六进制转八进制;

    import java.util.Scanner;

    public class Main {

    public static String change(String value,int src,int dest){

    return Integer.toString(Integer.parseInt(value,src),dest);
    }


    public static void main(String[] args) {
    // TODO Auto-generated method stub
    Scanner sc= new Scanner(System.in);
    int n=sc.nextInt();
    String a[]=new String[n];
    for(int i=0;i<n;i++)
    {
    a[i]=sc.next();

    }

    for(int i=0;i<n;i++)
    {
    System.out.println(change(a[i],16,8));

    }

    sc.close();

    }

    }

    --------------------
    贴出通过的C++代码。
    贴吧里看一大神做的
    ------------------

    #include <cstdio>
    #include <iostream>
    #include <cstring>
    #include <string>
    #include <cmath>
    #include <algorithm>
    #include <set>
    using namespace std;
    char str[100005], num;
    void Fun(int i, int state)
    {
    int temp;
    if(i < 0)
    {
    if(num != 0)
    {
    printf("%d", num);
    }
    return;
    }
    if(state != 3)
    {
    temp = str[i] >= '0' && str[i] <= '9' ? str[i] - '0' : str[i] - 'A' + 10;
    temp <<= state;
    num |= temp;
    temp = num;
    num >>= 3;
    Fun(i - 1, state + 1);
    printf("%d", (temp & 1) + (temp & 2) + (temp & 4));
    }
    else
    {
    temp = num;
    num >>= 3;
    Fun(i, 0);
    printf("%d", (temp & 1) + (temp & 2) + (temp & 4));
    }
    }
    int main()
    {
    int n;
    scanf("%d", &n);
    while(n--)
    {
    num = 0;
    scanf("%s", str);
    Fun(strlen(str) - 1, 0);
    printf(" ");
    }
    return 0;
    }

  • 相关阅读:
    android 权限大全
    Android限定EditText的输入类型为数字或者英文(包括大小写),EditText,TextView只能输入两位小数
    Android Application 对象介绍
    数据库关键字
    SQLite数据库增删改查操作
    【转】html之<meta> 标签
    javascript剔除数组重复元素的简单方法
    jQuery性能最佳实践
    css学习笔记
    【转】必须避免的html标签十宗罪
  • 原文地址:https://www.cnblogs.com/watchfree/p/5299727.html
Copyright © 2011-2022 走看看