国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

寒假20:算法訓練 回文數

2019-11-10 17:32:48
字體:
來源:轉載
供稿:網友

 算法訓練 回文數  時間限制:1.0s   內存限制:256.0MB      錦囊1模擬。錦囊2每次對于當前數均使用題設給出的方法模擬出下一個數,再判斷是不是回文數。 在模擬的時候,最好使用一個數組來表示數字,使用高精度計算的方法來處理數的加和回文數的判斷。問題描述  若一個數(首位不為零)從左向右讀與從右向左讀都一樣,我們就將其稱之為回文數。  例如:給定一個10進制數56,將56加65(即把56從右向左讀),得到121是一個回文數。  又如:對于10進制數87:  STEP1:87+78 = 165 STEP2:165+561 = 726  STEP3:726+627 = 1353 STEP4:1353+3531 = 4884  在這里的一步是指進行了一次N進制的加法,上例最少用了4步得到回文數4884。  寫一個程序,給定一個N(2<=N<=10或N=16)進制數M(其中16進制數字為0-9與A-F),求最少經過幾步可以得到回文數。  如果在30步以內(包含30步)不可能得到回文數,則輸出“Impossible!”輸入格式  兩行,N與M輸出格式  如果能在30步以內得到回文數,輸出“STEP=xx”(不含引號),其中xx是步數;否則輸出一行”Impossible!”(不含引號)樣例輸入987樣例輸出STEP=6

這個題是之前在別的學校比賽練習系統上遇到過的,之前好像沒有說有超過十進制的。當時不能提交了,但是寫出來了。

代碼(十六進制的沒有考慮進去):

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;	}}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 丰镇市| 黄浦区| 武功县| 洛南县| 迁西县| 甘洛县| 彭泽县| 绍兴市| 罗定市| 长岛县| 广宁县| 沁水县| 黄大仙区| 宝山区| 盐池县| 宝兴县| 田阳县| 东光县| 隆安县| 安达市| 明光市| 吴旗县| 屯留县| 黎川县| 汝城县| 哈密市| 北川| 东台市| 建始县| 古丈县| 浦北县| 北海市| 江孜县| 当雄县| 云林县| 安阳县| 英吉沙县| 张家口市| 丰都县| 阿拉尔市| 肥城市|