特殊回文数

该程序实现了一个功能,根据输入的正整数n,找出所有和为n的五位和六位回文数。当n为奇数时,只考虑五位回文数,如123321;当n为偶数时,既考虑五位也考虑六位回文数。样例输入为52,输出为满足条件的回文数,如899998、989989和998899。程序通过循环遍历所有可能的回文数并检查它们的数字之和来找到符合条件的数。
摘要由CSDN通过智能技术生成

问题描述

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

输入格式

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

输出格式

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

样例输入

52

样例输出

899998
989989
998899

数据规模和约定

  1<=n<=54。

 奇数为5位回文,偶数可以构成五位和六位回文数

#include<iostream>
using namespace std;
void func1(int n);
void func2(int n);
int main(){
	int n;
	do{

	cin>>n;
	} while(n<1||n>54);


//奇数只有五位回文,偶数有六位回文和5位回文两种情况 
if(n%2==1)   //奇数,即五位回文数
func1(n);
else           
{
	if(n<45) //偶数小于45,存在5位回文 
	func1(n);
	func2(n);
	
}

return 0; 
}

void func1(int n)
{
	int i,j;
	int num[5];
	for(i=10000;i<100000;i++)
	{
		num[4]=i%10;
		num[3]=i/10%10;
		num[2]=i/100%10;
		num[1]=i/1000%10;
		num[0]=i/10000%10;
		if(num[4]+num[3]+num[2]+num[1]+num[0]==n)
		if(num[4]==num[0]&&num[3]==num[1])
		cout<<i<<endl;
	}


}
void func2(int n)
{
	int i,j;
	int num[6];
	for(i=100000;i<1000000;i++)
	{
		num[5]=i%10;
		num[4]=i/10%10;
		num[3]=i/100%10;
		num[2]=i/1000%10;
		num[1]=i/10000%10;
		num[0]=i/100000%10;
		if(num[5]+num[4]+num[3]+num[2]+num[1]+num[0]==n)
		if(num[5]==num[0]&&num[4]==num[1]&&num[3]==num[2])
		cout<<i<<endl;
	}


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lhy_6668

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值