【蓝桥杯】回文数、特殊的回文数

特殊的回文数

问题描述
  123321是一个非常特殊的数,它从左边读和从右边读是一样的。
  输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。

输入格式
  输入一行,包含一个正整数n。

输出格式
  按从小到大的顺序输出满足条件的整数,每个整数占一行。

样例输入
52

样例输出
899998
989989
998899

数据规模和约定
  1<=n<=54。

思路

可直接从回文数的各位的数字上来考虑,即选取数字组成回文数。

#include<iostream>
using namespace std;
int main()
{
    int n;
    cin>>n;
    
    int i,j,k;
    int flag=0; 
     
    //求有无5位数的回数
    for(i=1;i<=9;i++) //第一和五位
    {
        for(j=0;j<=9;j++)   //第二和四位 
        {
            for(k=0;k<=9;k++)  //第三位 
            {
                if((i*2+j*2+k)==n)       //默认从小到大顺序
                { 
                    cout<<i<<j<<k<<j<<i<<endl;
                }
            }
        }
     } 
     
     //求六位回数 
     for(i=1;i<10;i++)   //1 6
     {
        for(j=0;j<10;j++)   //2 5
        {
            for(k=0;k<10;k++)  //3 4
            {
                if((i*2+j*2+k*2)==n)
                {
                    cout<<i<<j<<k<<k<<j<<i<<endl;
                 }
             }
         }
     }
     return 0;
}

回文数

问题描述
  1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。

输出格式
  按从小到大的顺序输出满足条件的四位十进制数。

思路

因仅需求出四位十进制数的回文数,故直接搜索即可

#include<iostream> 
using namespace std;
int main()
{
    int n;
    int i;
    int x,y,z;
    for(i=100;i<1000;i++)
    {
        n=i;
        x=n%10;
        n=n/10;
        y=n%10;
        n=n/10;
        z=n%10;
        if(i==(x*x*x+y*y*y+z*z*z))
        {
            cout<<i<<endl; 
        }
    }
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/wwj321/p/12322176.html