特殊回文数,123321是一个非常特殊的数,它从左边读和从右边读是一样的。输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。蓝桥杯问题一次性解答,含JAVA,C++代码

特殊回文数,123321是一个非常特殊的数,它从左边读和从右边读是一样的。输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。蓝桥杯问题一次性解答,含JAVA,C++代码小可爱们大家好这次是本小殿下第一次写文章多多担待哦

大家好,欢迎来到IT知识分享网。

样例输入

52

样例输出

枚举+判断 JAVA

import java.util.Scanner; public class Palindrome { 
    public static void main(String[] agrs) { 
    int n = 0; int i = 0, j = 0, k = 0; Scanner m = new Scanner(System.in); if (m.hasNext()) { 
    n = m.nextInt(); } for (i = 1; i < 10; i++) { 
    for (j = 0; j < 10; j++) { 
    for (k = 0; k < 10; k++) { 
    if (i * 2 + j * 2 + k == n) System.out.println("" + i + j + k + j + i); } } } for (i = 1; i < 10; i++) { 
    for (j = 0; j < 10; j++) { 
    for (k = 0; k < 10; k++) { 
    if (i * 2 + j * 2 + k * 2 == n) System.out.println("" + i + j + k + k + j + i); } } } } } 

答案
在蓝桥杯的检测中有很多细节的地方需要注意!!!
不然会纠结很久。

  1. 答案的顺序很重要,顺序指的是

    不能变为

    也就是在编程中for循环





for (i = 1; i < 10; i++) {     for (j = 0; j < 10; j++) {     for (k = 0; k < 10; k++) {     

不能改为

for (i = 1; i < 10; i++) { 
    for (j = 9; j >=0; j--) { 
    for (k = 0; k < 10; k++) { 
    

进阶版(考虑奇偶性)

import java.util.Scanner; public class Palindrome2 { 
    public static void main(String[] args) { 
    int n = 0; int i, j, k, l; Scanner sc = new Scanner(System.in); if (sc.hasNext()) { 
    n = sc.nextInt(); } /* 单数的情况和含有五位数的偶数部分 */ // 先看中间位 if (n % 2 == 0) { 
    l = 8;/* 当n为偶数时中间位最大为8 */ } else { 
    l = 9;/* 奇数时最大可为9 */ } for (k =1; k <10; k++) { 
    for (j = 0; j <10; j++) { 
    for (i = 0; i <=l; i++) { 
    if (k * 2 + j * 2 + i == n) System.out.println("" + k + j + i + j + k); } } } if(n%2==0){ 
   /* 只有偶数的情况才会出现6位数 */ for (i = 1; i < 10; i++) { 
    for (j = 0; j < 10; j++) { 
    for (k = 0; k < 10; k++) { 
    if (2 * i + 2 * j + 2 * k == n) System.out.println("" + i + j + k + k + j + i); } } } } } } 

由于代码不难就不做过多解释啦,有问题的小宝宝可以私聊我。

C++ (方法与上面相同)

#include<iostream> #include<algorithm> using namespace std; int ans[]; int main() { 
    int n,now,t=0; cin>>n; if(n%2==0)//只有偶数才有6位十进制数的可能 { 
    now=n/2; for(int i=9;i>=1;i--)//第一位不能为0 { 
    if(now-i>=0) { 
    for(int j=9;j>=0;j--) { 
    if(now-i-j>=0) { 
    for(int k=9;k>=0;k--) { 
    if(i+j+k==now) { 
    ans[t++]=i*+j*10000+k*1000+k*100+j*10+i; } } } } } } } //五位数的情况 int l; if(n%2==0) { 
    l=8; } else l=9; for(int i=l;i>=0;i=i-2)//先考虑最中间位数的情况,如果n是偶数,则最中间的一定是偶数,如果n是奇数,则中间位为奇数 { 
    if(n-i>=0) { 
    now=(n-i)/2; for(int j=9;j>=1;j--)//首位不为0 { 
    if(now-j>=0) { 
    for(int k=9;k>=0;k--) { 
    if(j+k==now) ans[t++]=j*10000+k*1000+i*100+k*10+j; } } } } } sort(ans,ans+t); for(int i=0;i<t;i++) { 
    cout<<ans[i]<<endl; } return 0; } 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/127906.html

(0)
上一篇 2025-09-04 15:15
下一篇 2025-09-04 15:20

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信