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

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

寒假20:算法訓練 回文數

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

 算法訓練 回文數  時間限制: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;	}}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 凤城市| 和龙市| 稷山县| 营口市| 西贡区| 开化县| 博爱县| 仲巴县| 上高县| 孝感市| 正宁县| 商河县| 辽中县| 永吉县| 通江县| 林甸县| 临清市| 云南省| 车险| 昌乐县| 城市| 叙永县| 琼中| 江西省| 方正县| 翼城县| 通州区| 颍上县| 甘谷县| 五常市| 万盛区| 江津市| 永登县| 肇源县| 定远县| 霍州市| 巨野县| 鲁甸县| 辽阳市| 辽阳市| 黄大仙区|