閒聊藍橋杯JAVA - 生成迴文數
生成迴文數
D:簡單的題目
標題:生成迴文數
所謂迴文數就是左右對稱的數字,比如:
585,5885,123321...
當然,單個的數字也可以算作是對稱的。
小明發現了一種生成迴文數的方法:
比如,取數字19,把它與自己的翻轉數相加:
19 + 91 = 110,如果不是迴文數,就再進行這個過程:
110 + 011 = 121 這次是迴文數了。
200以內的數字中,絕大多數都可以在30步以內變成迴文數,只有一個數字很特殊,就算迭代了1000次,它還是頑固地拒絕迴文!
請你提交該頑固數字,不要填寫任何多餘的內容。
M:簡單解法,這裡不做過多解釋
import java.math.BigInteger;
public class Test3 {
public static void main(String[] args) {
for (int i = 10; i < 200; i++) {
BigInteger bi = new BigInteger(i+"");
if(!back(bi)){
System.out.println(i);
return;
}
}
}
/**
* 生成迴文過程
* @param i
* @return true生成成功 false生成失敗
*/
private static boolean back(BigInteger num) {
int count =0;
while(count <= 1000){
if(canBack(num)){
return true;
}
num = num.add(changNum(num));
count++;
}
return false;
}
/**
* 變化數字
* @param num
* @return
*/
private static BigInteger changNum(BigInteger num) {
//顛倒
String str = "";
char[] arr = num.toString().toCharArray();
for (int i = arr.length-1; i>=0; i--) {
str += arr[i];
}
return new BigInteger(str);
}
/**
* 判斷是否為迴文數
* @param i
* @return
*/
private static boolean canBack(BigInteger num) {
String str = num.toString();
int start = 0;
int end = str.length()-1;
while(start < end){
char a = str.charAt(start);
char b = str.charAt(end);
if(a != b){
return false;
}
start++;
end--;
}
return true;
}
}
因為int長度不夠,故使用BigInteger
相關文章
- 藍橋杯試題 基礎練習 特殊迴文數
- 藍橋杯-迴文日期(兩種寫法)
- 藍橋杯——巧妙地遞迴遞迴
- 藍橋杯 分巧克力(Java)Java
- 藍橋杯-帶分數
- 藍橋杯-排列序數
- 藍橋杯 整數拼接
- 藍橋杯-axf檔案生成01
- 藍橋杯
- 藍橋杯 (java)演算法訓練 數對Java演算法
- 藍橋杯-合併數列
- 藍橋杯-波動數列
- 藍橋杯-子 2023 / 雙子數
- 藍橋杯-連號區間數
- 藍橋杯-買不到的數目
- 藍橋杯——特別數的和
- 藍橋杯真題:純質數
- Java藍橋杯14年第五題Java
- 藍橋杯 (java) 第39級階梯Java
- 藍橋杯-分巧克力
- 藍橋杯-N皇后
- 藍橋杯真題
- 藍橋杯 買瓜
- 藍橋杯 剪格子
- [Java] 藍橋杯ALGO-117 演算法訓練 友好數JavaGo演算法
- Java實現 藍橋杯 演算法提高 八數碼(BFS)Java演算法
- 藍橋杯演算法提高——字串匹配(Java)演算法字串匹配Java
- 藍橋杯:入門訓練 Fibonacci數列
- 藍橋杯之帶分數(全排列+暴力)
- 藍橋杯-長草(BFS)
- 藍橋杯-日期問題
- 藍橋杯-翻硬幣
- 藍橋杯-座次問題
- 藍橋杯 計算方程
- 藍橋杯-螞蟻感冒
- 如何準備藍橋杯
- 藍橋杯年號字串字串
- 藍橋杯考點整理