Allan


私信TA

用户名:dotcpp0613366

访问量:42

签 名:

等  级
排  名 36953
经  验 367
参赛次数 0
文章发表 1
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

TA的其他文章

解题思路:
先写出判断是否为回文数的独立方法,然后再暴力求和。。

判断回文数的方法时本来中途想到可以用双指针,但是想想还是继续暴力了。。

参考代码:

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 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答

代码解释器

  评论区