通过万岁!
- 标题:找到5和6的所有长度回文数,使其求和等于目标数n。注意要求先输出小的。
- 思路:最笨的方法,三层for。其实最后一层for可以换成一个if判断。如果n是奇数,则只有5位。
- 技巧:我们用6位来考虑,ijkkji,然后i j k k j i=n,所以k=(n-(i j j i))/2,在这个时候,我们只需要判断k是否从0-9。我们只需要判断一半。
- 注意:i从1开始。
- 题目链接:http://lx.lanqiao.cn/problem.page?gpid=T48
java代码
import java.util.Scanner; /** * @创建人 xcs * @创建日期 2022/3/6 * @创建时间 21:40 * 题目链接:http://lx.lanqiao.cn/problem.page?gpid=T48 */ public class BASIC9 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); int n = Integer.parseInt(scanner.nextLine()); // 5位 for (int i = 1; i < 10; i ) {
for (int j = 0; j < 10; j ) {
if (n - 2 * i - 2 * j > 9) {
continue; } System.out.println(i "" j (n - 2 * i - 2 * j) j i); } } // 奇数只能是5位的 if ((n & 1) == 1) {
return; } // 6位 for (int i = 1; i < 10; i++) {
for (int j = 0; j < 10; j++) {
if (n / 2 - i - j > 9) {
continue; } System.out.println(i + "" + j + (n / 2 - i - j) + (n / 2 - i - j) + j + i); } } scanner.close(); } }
- 总结:暴力也可以解,但是我们这样做可以少一层for。并且进行了剪枝。