閒聊藍橋杯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
相關文章
- 藍橋杯之特殊迴文數JAVAJava
- 藍橋杯 【基礎練習】 特殊迴文數
- 藍橋杯試題 基礎練習 特殊迴文數
- 藍橋杯-迴文日期(兩種寫法)
- 藍橋杯-帶分數
- 藍橋杯-axf檔案生成01
- 藍橋杯-波動數列
- 藍橋杯-合併數列
- 藍橋杯 (java)演算法訓練 數對Java演算法
- 藍橋杯-買不到的數目
- 藍橋杯-連號區間數
- 藍橋杯 排序排序
- 藍橋杯 分巧克力(Java)Java
- 藍橋杯 (java) 第39級階梯Java
- Java藍橋杯14年第五題Java
- 藍橋杯——Java基礎(進位制)Java
- 藍橋杯-N皇后
- 藍橋杯真題
- Java實現 藍橋杯 演算法提高 八數碼(BFS)Java演算法
- 藍橋杯 演算法訓練 K好數(Java解題)演算法Java
- 藍橋杯演算法提高——字串匹配(Java)演算法字串匹配Java
- 藍橋杯年號字串字串
- 藍橋杯-翻硬幣
- 藍橋杯-螞蟻感冒
- 藍橋杯 計算方程
- 藍橋杯-座次問題
- 藍橋杯-長草(BFS)
- 藍橋杯-日期問題
- 藍橋杯-班級活動
- [Java] 藍橋杯ALGO-117 演算法訓練 友好數JavaGo演算法
- [藍橋杯][演算法提高VIP]大數加法演算法
- 藍橋杯:基礎練習 查詢整數
- 【每週例題】藍橋杯 C++ 多數C++
- 藍橋杯-M次方根(實數二分)
- 藍橋杯-子 2023 / 雙子數
- 【藍橋杯考前突擊】第十一屆藍橋杯校賽模擬C/C++ 正整數序列C++
- 藍橋杯——查詢的妙趣
- 密碼脫落——藍橋杯密碼