杭电 -- 2031
Posted kyrie211
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了杭电 -- 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();
以上是关于杭电 -- 2031的主要内容,如果未能解决你的问题,请参考以下文章