竞赛
考级
买凤梨1 这道题目要求我们从给定的n个风梨中,统计出满足以下两个条件的风梨数量: 1. 重量在 500g500g500g 到 10000g10000g10000g 之间(包括 500500500 和 100001000010000 )。 2. 重量是一个回文数。 解决思路 1. 输入处理:首先读取整数n,表示风梨的数量,然后读取n个风梨的重量。 2. 条件判断:对于每个风梨的重量,检查是否满足: * 重量在 500500500 到 100001000010000 之间。 * 重量是回文数。 3. 统计结果:统计满足上述条件的风梨数量,并输出结果。 解决代码 代码解释 1. 函数 isPalindrome :判断一个数字是否是回文数。 * 将数字转换为字符串,反转后与原字符串比较,如果相同则是回文数。 2. 主函数 main: * 读取风梨的数量n和每个风梨的重量。 * 遍历所有重量,检查是否满足条件(重量在 500500500 到 100001000010000 之间且是回文数)。 * 统计满足条件的风梨数量并输出。 这样就能高效地统计出最多可以买回多少个好的风梨。
题目理解 需要统计满足一下两个条件凤梨的个数 1. 重量: 500≤ai≤10000500≤a_i ≤10000 500≤ai ≤10000 2. 数字本身是回文数(正读、反读相同) 思路 1. 遍历输入每一个凤梨的重量 2. 先判断是否在 [500, 10000] 区间类 3. 区间合法时,再判断是否为回文数 4. 同时满足两个条件则计数 +1 回文数判断逻辑 对一个数字 x: * 复制原数:a = x(不改变原数) * 不断取出末尾数字,拼接成翻转后的数字 rev * 若 rev = tmp 则是回文数 翻转一个数的公式:rev = rev * 10 + a % 10 注意:a 要除以 10, 否则会死循环。 代码 样例验证 逐个判断: 1. 555 : 500 ≤ 555 ≤ 10000,是回文数 → 计数 = 1 2. 666 :区间合法,是回文数 → 计数 = 2 3. 121 :121<500,直接跳过 4. 111 :11<500,直接跳过 最后输出:2
_______________________________________________________________________________________________________________________________________________________________________________________________- 看完了,点个关注吧, 实在不行点个赞吧!!!
#include<bits/stdc++.h> using namespace std; int get_back(int n){ int u=0; for(int i=0;n>0;i++){ u=u*10+n%10; n/=10; } return u; } int main(){ int n,g,c=0; cin>>n; for(int i=0;i<n;i++){ cin>>g; if(g==get_back(g)&&g>=500&&g<=10000) c++; } cout<<c; }
提交答案之后,这里将显示提交结果~