这个题是之前在别的学校比赛练习系统上遇到过的,之前好像没有说有超过十进制的。当时不能提交了,但是写出来了。
代码(十六进制的没有考虑进去):
import java.util.Scanner;public class B { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int k=sc.nextInt(); String num=sc.nextInt()+""; boolean fa=getBool(num); int conut=0; while(fa==false){ String str=getAdd(k,num); num=str; fa=getBool(str); conut++; if(conut==30){ System.out.PRintln("Impossible!"); return; } } System.out.println("STEP="+conut); } private static boolean getBool(String str) { int le=str.length(); for (int i = 0; i < le/2; i++) { if(str.charAt(i)!=str.charAt(le-i-1)){ return false; } } return true; } //K进制的加法 private static String getAdd(int k,String num) { String str=""; int jw=0; int le=num.length()-1; for (int i = num.length()-1; i >= 0; i--) { int x=(num.charAt(i)+num.charAt(le-i))-2*'0'+jw; str=x%k+str; jw=x/k; } if(jw==1) str=1+str; return str; }}
新闻热点
疑难解答