A46039.买凤梨1
2026-06-10 19:11:39
发布于:广东
16阅读
0回复
0点赞
题目理解
需要统计满足一下两个条件凤梨的个数
- 重量:
- 数字本身是回文数(正读、反读相同)
思路
- 遍历输入每一个凤梨的重量
- 先判断是否在 [500, 10000] 区间类
- 区间合法时,再判断是否为回文数
- 同时满足两个条件则计数 +1
回文数判断逻辑
对一个数字 x:
- 复制原数:
a = x(不改变原数) - 不断取出末尾数字,拼接成翻转后的数字
rev - 若
rev = tmp则是回文数
翻转一个数的公式:rev = rev * 10 + a % 10
注意:a 要除以 10, 否则会死循环。
代码
#include <bits/stdc++.h>
using namespace std;
bool isPal(int x) {
int a = x;
int rev = 0;
while (a > 0) {
rev = rev * 10 + a % 10;
a /= 10;
}
return rev == x;
}
int main() {
int n, ans = 0;
cin >> n;
for (int i = 1; i <= n; i++) {
int w;
cin >> w;
if (w >= 500 && w <= 10000) {
if (isPal(w)) {
ans++;
}
}
}
cout << ans << endl;
return 0;
}
样例验证
逐个判断:
- 555 : 500 ≤ 555 ≤ 10000,是回文数 → 计数 = 1
- 666 :区间合法,是回文数 → 计数 = 2
- 121 :121<500,直接跳过
- 111 :11<500,直接跳过
最后输出:2
全部评论 1
nbnbnb
1周前 来自 广东
0











有帮助,赞一个