解题思路:
先写出判断是否为回文数的独立方法,然后再暴力求和。。
判断回文数的方法时本来中途想到可以用双指针,但是想想还是继续暴力了。。
参考代码:
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); boolean flag = false; //设立标记 看看最后有没有输出 没有就返回-1 while (scanner.hasNext()) { int a = scanner.nextInt(); Main mm = new Main(); int head = 10000; //五位数字第一个 int tail = 999999;//六位数字最后一个 for(int j=head; j<=tail; j++){ //先判断能不能满足和为n int nums = j; int sum = 0; while(nums != 0){ //每一位相加 sum += nums%10; nums = nums/10; } if(sum != a){ //如果不等于输入 continue; }else{ if(mm.isReverse(j)){ System.out.println(j); flag = true; }else{ continue; //跳出当前循环 } } } if(!flag){ System.out.println(-1); } } } //定义判断是否为回文数的方法 public boolean isReverse(int num){ int res = num; int count=1; //计数 有多少位 while(res/10 != 0){ res = res/10; count ++; } int[] arr = new int[count/2]; for (int i=0; i<count/2; i++){ arr[i] = num%10; num = num/10; } if(count%2 != 0){ //判断单数还是双数 num = num/10; //单数的话就先进一位 for(int i=(count/2)-1; i>=0; i--){ if(arr[i] != num%10){ return false; }else{ num = num/10; } } }else{ for(int i=(count/2)-1; i>=0; i--){ if(arr[i] != num%10){ return false; }else{ num = num/10; } } } return true; } }
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题11.3 (C语言代码)浏览:734 |
简单的a+b (C语言代码)浏览:643 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:1066 |
C语言训练-排序问题<1> (C++代码)浏览:589 |
A+B for Input-Output Practice (VII) (C++代码)浏览:606 |
剪刀石头布 (C语言代码)不知道怎么直接在scanf中用枚举变量浏览:1304 |
Pascal三角 (C语言代码)格式错误浏览:516 |
printf基础练习2 (C语言代码)浏览:740 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:262 |
大家好,我是验题君浏览:573 |