学习C++从娃娃抓起!记录下在学而思小猴编程学习过程中的题目,记录每一个瞬间。侵权即删,谢谢支持!
附上汇总贴:小猴编程C++周赛 | 汇总-CSDN博客
【题目描述】
回文数是指从左向右念和从右向左念都一样的数。如 12321 就是一个典型的回文数。
偶回文数是指一个位数是偶数的十进制整数回文。例如 1221 就是一个偶回文数,而 121 和 1231 都不是偶回文数,因为前者是回文串但位数不是偶数,后者位数是偶数但不是回文数。
现在给定一个整数 n,请你找出 1∼n 之间所有的偶回文数,计算并输出偶回文数的个数以及它们的和。
【输入】
一行一个整数 n。
【输出】
一行两个整数,分别表示偶回文数的个数与偶回文数的和。
【输入样例】
30
【输出样例】
2 33
【代码详解】
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n, sum=0, cnt=0;
string s;
int main()
{
cin >> n; // 输入n
for (int i=1; i<1000000; i++) { // 遍历6位数
ll ans = 0; // 定义回文数之和,初始为0
s = to_string(i); // 将i改为字符串
for (int i=s.length()-1; i>=0; i--) { // 翻转s字符串并拼接
s = s + s[i];
}
for (int i=0; i<s.length(); i++) { // 将回文字符串转成数字ans
ans = ans*10 + (s[i] - '0');
}
if (ans<=n) { // 如果ans小于等于n
sum += ans; // 进行累加
cnt++; // 计数器自增1
} else break; // 否则退出循环
}
cout << cnt << " " << sum << endl; // 打印回文数个数及总和
return 0;
}
【运行结果】
30
2 33