国产探花免费观看_亚洲丰满少妇自慰呻吟_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;	}}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 娄底市| 深泽县| 隆林| 布拖县| 山阴县| 义马市| 登封市| 普宁市| 天柱县| 文山县| 绵竹市| 晋州市| 宜丰县| 洛隆县| 嘉禾县| 贵州省| 曲松县| 舒城县| 兴和县| 抚远县| 石楼县| 浠水县| 湘阴县| 长武县| 南康市| 河南省| 舟山市| 绥棱县| 隆化县| 呈贡县| 奉贤区| 金秀| 乌鲁木齐市| 昭平县| 宁化县| 修文县| 玉田县| 奎屯市| 肃北| 榆林市| 麻栗坡县|