PAT甲级1027

JAVA PAT甲级1027 Colors in Mars

package higherlevel;

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

/*
    题目概述:火星采用13进制,给三个十进制的数,输出13进制的RGB颜色值
    本以为很简单,结果第一次提交出现两个错误
    很快发现错误,0应该放前边不是放后边,否则算出来的10进制值就和给的不匹配了
 */
public class I027 {
    public static void main(String[] args) {
        Scanner s=new Scanner(System.in);
        int red=s.nextInt();
        int green=s.nextInt();
        int blue=s.nextInt();
        System.out.print("#");		//先输出一个#,别忘记了
        thirteenRadix(red);
        thirteenRadix(green);
        thirteenRadix(blue);
    }
    public static void thirteenRadix(int value){
        ArrayList<Integer> list=new ArrayList<>();
        if(value==0){
            list.add(value);
        }else{
            while(value!=0){
                int a=value%13;
                int b=value/13;
                value=b;
                list.add(a);		//这里面添加进来的是倒序的,别忘了除K取余法求进制,是将所有的余数从下往上写
            }
        }
        if(list.size()==1){             //判断只有一位,这个条件是要加0的,只有一位的数(0,1,2,3,4,5,6,7,8,9,A,B,C)
            if(list.get(0)==10){
                System.out.print("0A");
            }else if(list.get(0)==11){
                System.out.print("0B");
            }else if(list.get(0)==12){
                System.out.print("0C");
            }else{
                System.out.print("0"+list.get(0));
            }
        }else{                          //两位就不用考虑加0了,直接倒序输出就行了,注意>=10输出字母
            for(int i=list.size()-1;i>=0;i--){
                if(list.get(i)==10){
                    System.out.print("A");
                }else if(list.get(i)==11){
                    System.out.print("B");
                }else if(list.get(i)==12){
                    System.out.print("C");
                }else{
                    System.out.print(list.get(i));
                }
            }
        }
    }
}

如果有哪里不懂的可以给我留言哈,看到了一定马上回复

你可能感兴趣的:(PAT(Advanced,Level))