首页 > 编程语言 >【蓝桥杯选拔赛真题48】C++九进制回文数 第十四届蓝桥杯青少年创意编程大赛 算法思维 C++编程选拔赛真题解析

【蓝桥杯选拔赛真题48】C++九进制回文数 第十四届蓝桥杯青少年创意编程大赛 算法思维 C++编程选拔赛真题解析

时间:2024-03-27 09:03:24浏览次数:28  
标签:进制 真题 int C++ 蓝桥 循环 使用 十进制 回文

目录

C++九进制回文数

一、题目要求

1、编程实现

2、输入输出

二、算法分析

三、程序编写

四、程序说明

五、运行结果

六、考点分析

七、推荐资料


C++九进制回文数

第十四届蓝桥杯青少年创意编程大赛C++选拔赛真题

一、题目要求

1、编程实现

提示信息:

  • 回文数: 反向排列与原来一样的数就叫做回文数
  • 例如,12321 是回文数,1231不是回文数。
  • 九进制数:指逢9进位的一种进位计数制,以0、1、2、3、4、5、6、7、8共九个数码表示。例如:十进制数 9等于九进制数 10,十进制数81 等于九进制数 100,以此类推

给定两个正整数N和M(1≤N≤M≤5000),请计算出N到M之间(含N和M)总共有多少个数满足以下条件:1、转换为九进制之后为回文数
2、转换为九进制后每个数位上的数字都是奇数

例如:
当N=90,M=120。90到 120之间(含90和120) 总共有2 个数满定条件,为91 和109。91 转换为九进制为 111,是一个回文数,且每个数位上的数字都是奇数,109 转换为九进制为 131,是一个回文数,且每个数位上的数字都是奇数;故输出2。

2、输入输出

输入描述:输入两个正整数N 和 M(1<N<M<5000),两个正整数之间用一个空格隔开

输出描述:输出一个整数,表示 N到M之间(含 N和 M)总共有多少个满足条件的正整数

输入样例:

90  120

输出样例:

2

二、算法分析

  1. 从给定题目的初步分析可以看出,题目要求的是九进制回文数
  2. 所以需要将N到M中的每个数字转换为九进制
  3. 接着判断九进制数的每一位是否符合奇数回文数的要求
  4. 符合就将个数增加,最后输出符合要求的总数即可

三、程序编写

#include<iostream>
using namespace std;
int a[10];
int get_Nine(int k)
{
	int l = 0,t;
	while(k)
	{
		t = k % 9;
		if(t % 2 == 0)
			return 0;
		a[l] = t;
		k /= 9;
		l++;
	}
	for(int i=0,j=l-1;i<j;i++,j--)
	{
		if(a[i] != a[j])
			return 0;
	}
	return 1;
}
int main()
{
	int n,m,res = 0;
	cin >> n >> m;
	for(int i=n;i<=m;i++)
		res += get_Nine(i);
	cout << res << endl;
	return 0;
}

四、程序说明

  1. 首先需要导入输入输出流头文件
  2. 然后是引入std命名空间中的所有成员到当前的程序中,这样在当前的程序中就可以直接使用 std 命名空间中的所有成员,而不需要使用的时候在成员前面加上(std::)前缀
  3. 定义了一个大小为10的整型数组a,用于存储转换后的九进制数的每一位
  4. 定义一个get_Nine函数用于判断一个十进制数转换为九进制后是否为回文数,参数k为要判断的十进制数
  5. 函数内部进行以下操作: 初始化变量l为0,用于记录转换后的九进制数的位数
  6. 使用while循环,将十进制数k转换为九进制数,循环条件为k不为0
  7. 在循环内部,使用变量t保存k除以9的余数,即九进制数的当前位数
  8. 如果t为偶数,则返回0,表示不是回文数
  9. 否则,将t保存到数组a中并将l加1
  10. 将k除以9,更新k的值
  11. 使用for循环,检查数组a是否为回文数
  12. 循环条件为i小于j,同时i从0开始递增,j从l-1开始递减。如果a[i]和a[j]不相等,则返回0,表示不是回文数
  13.  如果以上所有条件都满足,则返回1,表示是回文数
  14. 在主函数main中,定义了变量n和m,分别表示范围的起始和结束值
  15. 然后使用for循环,依次遍历范围内的每个十进制数
  16. 对于每个十进制数,调用get_Nine函数判断是否为九进制的回文数,然后累加到变量res上
  17. 循环结束后,输出变量res的值,即范围内九进制回文数的个数
  18. 最后返回0,程序结束

 本文作者:小兔子编程 作者首页:https://blog.csdn.net/frank2102

五、运行结果

90  120

2

六、考点分析

难度级别:中等,这题相对而言有一定的难度,在于九进制转换及每一位数的获取,具体主要考查如下:

  1. 充分掌握变量的定义和使用
  2. 学会输入流对象cin的使用,从键盘读入相应的数据
  3. 学会for循环的使用,在确定循环次数的时候推荐使用学会
  4. 学会while循环的使用,在不确定循环次数的时候推荐使用
  5. 学会if条件判断语句的使用,满足一定条件才能执行后面的语句
  6. 学会if...else...双分支语句的使用,条件满足执行一种处理,不满足执行另一种处理
  7. 掌握输出流对象cout的使用,与流插入运算符 << 结合使用将对象输出到终端显示
  8. 学会分析题目,算法分析,将复杂问题模块化,简单化,从中找到相应的解题思路
  9. 充分掌握变量定义和使用、分支语句、循环语句和简单算法知识的使用及输入输出的用法

PS:方式方法有多种,小朋友们只要能够达到题目要求即可!

七、推荐资料

标签:进制,真题,int,C++,蓝桥,循环,使用,十进制,回文
From: https://blog.csdn.net/frank2102/article/details/137023800

相关文章

  • 蓝桥杯练习题总结(三)线性dp题(摆花、数字三角形加强版)
    目录 一、摆花思路一: 确定状态:初始化:思路二:确定状态:初始化:循环遍历: 状态转移方程: 二、数字三角形加强版一、摆花题目描述小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共m盆。通过调查顾客的喜好,小明列出了顾客最喜欢的n种花,从1到n标号。为了......
  • C/C++整形变量溢出问题
    参考C语言的整型溢出问题|酷壳-CoolShell   概述整形溢出分为无符号(unsigned)整型溢出和有符号(signed)整型溢出无符号整型溢出对于unsigned整型溢出,C的规范是有定义的——“溢出后的数会以2^(8*sizeof(type))作模运算”比如,两个unsignedint类型求和溢出......
  • C++ map踩坑
    目录!!!不要直接使用[]来操作map,否则会有意想不到的错误。尽量使用map提供的函数(count、find、insert、erase)来操作map242.有效的字母异位词描述:给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词。注意:若s和t中每个字符出现的次数都相同,则称s和t......
  • 扫地机器人 二分答案,贪心 蓝桥杯
    二分答案与二分查找类似,二分查找有一个前提就是数列要求是有序的,二分答案则是要求满足条件的答案是单调有序的,它的基本思想是在答案可能的范围([L,R])内二分查找答案,不断检查当前答案是否满足题目的要求,根据检查结果更新查找的区间,最终取得最符合题目要求的答案进行输出。......
  • C++ 用户输入与数据类型详解:建立基本计算器及变量类型
    C++用户输入你已经学习了cout用于输出(打印)值。现在我们将使用cin来获取用户输入。cin是一个预定义变量,它使用提取运算符(>>)从键盘读取数据。在下面的示例中,用户可以输入一个数字,该数字存储在变量x中。然后我们打印x的值:示例intx;cout<<"Typeanumber:";//......
  • C++ 用户输入与数据类型详解:建立基本计算器及变量类型
    C++用户输入你已经学习了cout用于输出(打印)值。现在我们将使用cin来获取用户输入。cin是一个预定义变量,它使用提取运算符(>>)从键盘读取数据。在下面的示例中,用户可以输入一个数字,该数字存储在变量x中。然后我们打印x的值:示例intx;cout<<"Typeanumber:"......
  • C++文件类(文件流类)及用法详解
    open()fstreamifstreamofstream打开指定文件,使其与文件流对象相关联。is_open()检查指定文件是否已打开。close()关闭文件,切断和文件流对象的关联。swap()交换2个文件流对象。operator>>fstreamifstream重载>>运算符,用于从指定文件中读取数据。gcoun......
  • 蓝桥杯 试题 基础练习 十进制转十六进制 C++
    问题描述十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制......
  • C++的format函数
    C++20引入了<format>库,它提供了类似于Python的格式化字符串的功能。你可以使用std::format函数来格式化字符串。format   格式控制标记  [[fill]align][sign][#][0][wigth][precision][type]下面依次讲解format的格式控制标记的基本用法:1.[[fill]align]这个格式......
  • 【蓝桥杯省赛真题33】python单词排序 中小学青少年组蓝桥杯比赛 算法思维python编程省
     目录python单词排序一、题目要求1、编程实现2、输入输出二、算法分析三、程序编写四、程序说明五、运行结果六、考点分析七、 推荐资料1、蓝桥杯比赛2、考级资料3、其它资料python单词排序第十三届蓝桥杯青少年组python比赛省赛真题一、题目要求(注:input......