更多JAVA版答案移步我的博客:蓝桥杯JAVA版答案汇总
本题考查
进制转换(注意该进制转换是将十进制转化为没有0的26进制)
思路
因为本题不是严格的26进制,所以在当前数字能够整除26时,需要将除完后的数字减一,比如转换676时,正确结果是YZ,如果不减一的话,就会出现结果AZZ。
减一的原因分析:因为该进制中没有0,所以正常26进制中的0需要用26代替,也就是需要从上一位借一个26拿过来补充这一位,所以需要在除完后减一,以表示从上一位借了一个1,也就是拿过来一个26。正规26进制,676的表示为Z0,但现在没有0,所以0这一位得向上一位借一个1,也就是0这一位的26,所以就变成了YZ。
AC代码
import java.util.Scanner;
public class Excel地址 {
public static void main(String[] args) {
Scanner scaner = new Scanner(System.in);
int num = scaner.nextInt();
scaner.close();
String str = "";
while(num>0)
if(num%26 == 0){
str = 'Z' + str;
num/=26;
num--;
}
else{
str = (char)(num%26 + 64) + str;
num/=26;
}
System.out.println(str);
}
}