zoukankan      html  css  js  c++  java
  • HDU1335 POJ1546 UVA389 UVALive5306 ZOJ1334 Basically Speaking

    Time Limit: 1000MS   Memory Limit: 10000K
    Total Submissions: 4772   Accepted: 2141

    Description

    The Really Neato Calculator Company, Inc. has recently hired your team to help design their Super Neato Model I calculator. As a computer scientist you suggested to the company that it would be neato if this new calculator could convert among number bases. The company thought this was a stupendous idea and has asked your team to come up with the prototype program for doing base conversion. The project manager of the Super Neato Model I calculator has informed you that the calculator will have the following neato features: 

    • It will have a 7-digital display. 
    • Its buttons will include the capital letters A through F in addition to the digits 0 through 9. 
    • It will support bases 2 through 16. 

    Input

    The input for your prototype program will consist of one base conversion per line. There will be three numbers per line. The first number will be the number in the base you are converting from. The second number is the base you are converting from. The third number is the base you are converting to. There will be one or more blanks surrounding (on either side of) the numbers. There are several lines of input and your program should continue to read until the end of file is reached.

    Output

    The output will only be the converted number as it would appear on the display of the calculator. The number should be right justified in the 7-digit display. If the number is to large to appear on the display, then print ``ERROR'' (without the quotes) right justified in the display.

    Sample Input

    1111000  2 10
    1111000  2 16
    2102101  3 10
    2102101  3 15
      12312  4  2
         1A 15  2
    1234567 10 16
       ABCD 16 15

    Sample Output

        120
         78
       1765
        7CA
      ERROR
      11001
     12D687
       D071

    Source


    Regionals 1995 >> North America - Mid-Central USA


    问题链接HDU1335 POJ1546 UVA389 UVALive5306 ZOJ1334 Basically Speaking

    问题简述:参见上文。

    问题分析:每行给出一个数、进制和目标进制,对数进行进制转换,输出一个长度不大于7的值。

    一个纯粹进制转换题,需要懂得进制的原理,熟悉atoi()和itoa()的实现过程。

    另外需要注意的是,值的范围和输入输出格式。

    程序说明:(略)


    AC的C语言程序如下:

    /* HDU1335 POJ1546 Basically Speaking */
    
    #include <stdio.h>
    
    #define LEN 7
    
    // 进制转换:将frombase进制的s[]转换为tobase进制,并且输出
    void changeoutput(char s[], int frombase, int tobase)
    {
        long long result = 0;
        char t[64], *p;
        int count;
    
        // atoi:字符串转换为整数,基数为frombase
        p = s;
        while(*p) {
            result *= frombase;
            if('0' <= *p && *p <= '9')
                result += *p - '0';
            else if('A' <= *p && *p <= 'F')
                result += *p + 10 - 'A';
            p++;
        }
    
        // itoa:整数转换为字符串,基数为tobase
        count = 0;
        while(result) {
            int val = result % tobase;
            if(0 <= val && val <= 9)
                t[count] = val + '0';
            else if(10 <= val && val <= 15)
                t[count] = val - 10 + 'A';
            result /= tobase;
            count++;
        }
    
        // 输出结果
        if(count == 0)
            printf("      0
    ");
        else if(count > LEN)
            printf("  ERROR
    ");
        else {
            int i;
            // 补足空格
            for(i=count; i<LEN; i++)
                t[i] = ' ';
            // 逆序输出
            for(i=LEN-1; i>=0; i--)
                putchar(t[i]);
            putchar('
    ');
        }
    }
    
    int main(void)
    {
        int frombase, tobase;
        char s[1024];
        
        while(scanf("%s%d%d", s, &frombase, &tobase) != EOF) {
            changeoutput(s, frombase, tobase);
        }
        
        return 0;
    }


  • 相关阅读:
    Navicat Premium15安装与激活
    JDK13.0.1安装与环境变量的配置(Win10平台为例)
    Linux系统手动安装Firefox浏览器
    Debian 9.5 解决中文显示乱码
    debian 安装后需做的几件事
    Windows10 Linux子系统安装图形化界面的两种方法及其对比
    线程池大小设置,CPU的核心数、线程数的关系和区别,同步与堵塞完全是两码事
    Java学习笔记八(反射)
    高速排序法(一)
    Java深入
  • 原文地址:https://www.cnblogs.com/tigerisland/p/7564569.html
Copyright © 2011-2022 走看看