三角回文数
📆Date: 2023年1月4日
✒️Author: SmartBoy
📓Classify: 蓝桥杯每日一题
🔖Language: Java
✨题目描述
对于正整数 n ,如果存在正整数 k 使得 n = 1 + 2 + 3 + · · · + k = k(k+1)/ 2 ,则 n 称为三角数。例如,66066 是一个三角数,因为 66066 = 1 + 2 + 3 + · · · + 363。 如果一个整数从左到右读出所有数位上的数字,与从右到左读出所有数位 上的数字是一样的,则称这个数为回文数。例如,66066 是一个回文数,8778 也是一个回文数。 如果一个整数 n 既是三角数又是回文数,我们称它为三角回文数。例如 66066 是三角回文数。 请问,第一个大于 20220514 的三角回文数是多少?
🎉解题思路
先计算出20220514对应的k的值,从这个k值开始做循环,利用三角数公式得到int n的值即为三角数,再调用回文判断函数,如果这个数为回文数,输出即可。
🥇Java源码
public class Main { public static void main(String[] args) { for (int i = 6359; i < Integer.MAX_VALUE; i++) { int n = (i * (i + 1)) / 2; if (isPalindrome(n)){ System.out.println(n); break; } } } // 判断回文 public static boolean isPalindrome(int n){ StringBuilder s = new StringBuilder(Integer.toString(n)); String a = s.toString(); return a.equals(s.reverse().toString()); } }