這個題是之前在別的學校比賽練習系統上遇到過的,之前好像沒有說有超過十進制的。當時不能提交了,但是寫出來了。
代碼(十六進制的沒有考慮進去):
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; }}
新聞熱點
疑難解答