蓝桥杯学习记录-21.2.25
一、测试练习
回文数
1、问题描述
资源限制
时间限制:1.0s 内存限制:512.0MB
问题描述
153是一个非常特殊的数,它等于它的每位数字的立方和,即153=111+555+333。编程求所有满足这种条件的三位十进制数。
输出格式
按从小到大的顺序输出满足条件的三位十进制数,每个数占一行。
2、解题思路
(1)因为要输出的是三位可能不相同的数,所以首先要用三层for 循环遍历数字
(2)然后用if找出符合条件的数字
(3)最后用十进制输出来
3、代码
include<iostream>
using namespace std;
int main()
{
for (int i = 1; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
for (int k = 0; k < 10; k++)
{
if (i * 100 + j * 10 + k == i * i * i + j * j * j + k * k * k)
{
cout<<i * 100 + j * 10 + k<<endl;
}
}
}
}
二、视频学习
1、视频名称及链接
[枚举算法练习]
(https://www.bilibili.com/video/BV1jE411g76D?p=8)
2、学习心得
(1)枚举就是根据提出的问题,列出该问题的所有的可能,并逐一列出的可能,检验每个可能解是否是问题的正解,如果是就采用,不是的话就判断下一个。
(2)题目具有的特点:解枚举范围是有穷的,检验条件是确定的
3、对应练习
特殊的回文数
(1)题目描述
资源限制
时间限制:1.0s 内存限制:512.0MB
问题描述
123321是一个非常特殊的数,它从左边读和从右边读是一样的。
输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。输入格式
输入一行,包含一个正整数n。
输出格式
按从小到大的顺序输出满足条件的整数,每个整数占一行。
样例输入
52
样例输出
899998
989989
998899数据规模和约定
1<=n<=54。
(2)代码
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
for (int a = 1; a < 10; a++)
{
for (int b = 0; b < 10; b++)
{
for (int c = 0; c < 10; c++)
{
if (n == (a + b)*2+c)
{
cout<<a*10000+b*1000+c*100+b*10+a<<endl;
}
}
}
}
for (int i = 1; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
for (int k = 0; k < 10; k++)
{
if (n == (i + j + k)*2)
{
cout<<i*100000+j*10000+k*1000+k*100+j*10+i<<endl;
}
}
}
}
return 0;
}