杭电 -- 2031

题意及思路

题意:输入两个数n,r,将n(十进制数)转换为r进制。

思路:%r操作即可转换。

踩坑点:第一,n有可能为负数,若为负数,则注意负数的情况。第二,若转换的数字大于10,exp:10 --> A。则将其转换为16进制中各个数的对应形式。尤其注意(我自己的问题),当输出一个字符(如A)时,不要“急着”输出换行符,否则将会步我的后尘。哎!

代码

package com.kyrie.java1;

import java.util.ArrayList;
import java.util.Scanner;

public class HD2031 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n, r;
        while (in.hasNext()) {
            n = in.nextInt();
            r = in.nextInt();
            trans(n, r);
        }
        in.close();
    }

    private static void trans(int n, int r) {
        int t = 0;
        boolean flag = false;
        if (n < 0) {
            flag = true;
            n = -n;
        }
        ArrayList<Integer> aL = new ArrayList<Integer>();
        // translate
        while (n != 0) {
            aL.add(n % r);
            n /= r;
        }
        // 判断负号
        if (flag) {
            System.out.print("-");
        }
        for (int i = aL.size() - 1; i >= 0; i--) {
            t = aL.get(i);
            if (t >= 10) {
                System.out.printf("%c", ‘A‘ + (t - 10));
            } else {
                System.out.print(t);
            }
        }
        System.out.println();
    }
}

原文地址:https://www.cnblogs.com/kyrie211/p/11183162.html

时间: 2024-10-11 20:30:57

杭电 -- 2031的相关文章

杭电2031(进制转换)

点击打开杭电2031 Problem Description 输入一个十进制数N,将它转换成R进制数输出. Input 输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16, R<>10). Output 为每个测试实例输出转换后的数,每个输出占一行.如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,等等). Sample Input 7 2 23 12 -4 3 Sample Output 111 1B -11 代码实现: im

进位转换(杭电2031)

/*进制转换 Problem Description 输入一个十进制数N,将它转换成R进制数输出. Input 输入数据包括多个測试实例,每一个測试实例包括两个整数N(32位整数)和R(2<=R<=16, R<>10). Output 为每一个測试实例输出转换后的数,每一个输出占一行.假设R大于10,则相应的数字规则參考16进制(比方,10用A表示,等等). Sample Input 7 2 23 12 -4 3 Sample Output 111 1B -11 */ //使用两个

杭电2031进制转换

Problem Description 输入一个十进制数N,将它转换成R进制数输出. Input 输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16, R<>10). Output 为每个测试实例输出转换后的数,每个输出占一行.如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,等等). Sample Input 7 2 23 12 -4 3 Sample Output 111 1B -11 1 #include <stdi

杭电2031

进制转换 Problem Description 输入一个十进制数N,将它转换成R进制数输出.   Input 输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16, R<>10).   Output 为每个测试实例输出转换后的数,每个输出占一行.如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,等等).   Sample Input 7 2 23 12 -4 3   Sample Output 111 1B -11   Auth

杭电2031 进制转换

进制转换 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 49640    Accepted Submission(s): 27279 Problem Description 输入一个十进制数N,将它转换成R进制数输出. Input 输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16, R<&

杭电ACM题目分类

杭电ACM题目分类 基础题:1000.1001.1004.1005.1008.1012.1013.1014.1017.1019.1021.1028. 1029.1032.1037.1040.1048.1056.1058.1061.1070.1076.1089.1090.1091.1092. 1093.1094.1095.1096.1097.1098.1106.1108.1157.1163.1164.1170.1194.1196. 1197.1201.1202.1205.1219.1234.123

进制转换,杭电0j-2031

进制转换,杭电0j-2031原题地址:http://acm.hdu.edu.cn/showproblem.php?pid=2031 [Problem Description] 输入一个十进制数N,将它转换成R进制数输出. [Input] 输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16, R<>10). [Output] 为每个测试实例输出转换后的数,每个输出占一行.如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,等等).

杭电 HDU 1164 Eddy&#39;s research I

Eddy's research I Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 7117    Accepted Submission(s): 4268 Problem Description Eddy's interest is very extensive, recently  he is interested in prime

hdu 1016 Prime Ring Problem DFS解法 纪念我在杭电的第一百题

Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 29577    Accepted Submission(s): 13188 Problem Description A ring is compose of n circles as shown in diagram. Put natural num