蓝桥杯——特殊回文(回文)及蓝桥杯备战感想

备战蓝桥杯

备战蓝桥杯比赛是从二月份开始的,两个星期后以失败告终。那个时候,一天解决不了一道题,一是C语言忘了差不多,二是没有解决解决问题的思想。时隔六个月,因为疫情的原因,蓝桥杯比赛时间改到了九月份,我也走出了连续十多天解不出多少题的阴影,在七月末重新开始备战蓝桥杯。坚持每天看真题,刷题目,直到今天,终于也可以独立地解决题目,虽然是比较基础地题目,但那种拿到题目心中就有思路就有解决办法的喜悦是无可言表的,还有一个多月,坚持!!!

题目

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

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

样例输入
52
样例输出
899998
989989
998899
数据规模和约定
1<=n<=54。

解题思路

要求从所有5位和6位数中找出符合条件的,这就要用一次循环。
判断是否是回文数,可以通过while语句对比两侧数是否相同。
在满足回文数的条件下,判断数的每位相加是否等于n,这可以使用if嵌套。

回文数的题目简化一下本题代码即可实现

代码

#include<iostream>

using namespace std;

int main(){
	int line = 0;
	cin>>line;
	int arr[line][line] = {0};
	
	for(int i=0;i<line;i++){
		for(int j=0;j<=i;j++){
			if(i==j||j==0){
				arr[i][j] = 1;
			}
			else
				arr[i][j] = arr[i-1][j]+arr[i-1][j-1];
		}
	}
	
	for(int i=0;i<line;i++){
		for(int j=0;j<=i;j++){
			printf("%d ",arr[i][j]);
		}
		printf("\n");
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_44078014/article/details/107815395