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

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

大家好,我是讯享网,很高兴认识大家。

问题描述
  
  是一个非常特殊的数,它从左边读和从右边读是一样的。
  
  输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。
  
输入格式
  
  输入一行,包含一个正整数n。
  
输出格式
  
  按从小到大的顺序输出满足条件的整数,每个整数占一行。

样例输入

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++) { 
    

虽然看似结果一样但测试会不通过!!!
2. 注意5位整数或5位整数,则像正常数字一样最小的是10000,也就是除第一位意外,其余位皆可为0。
3. System.out.println("" + i + j + k + j + i);
在JAVA中像输出5个连续的整数需要在尾部或首部添加 “”。

进阶版(考虑奇偶性)

讯享网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; } 
小讯
上一篇 2025-04-02 10:16
下一篇 2025-02-16 14:12

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/32566.html