测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A33024. 幸运数字如果把一个数字十进制表示的奇数位和偶数位分别相加得到的和相同,小小就认为它是一个幸运的数字。例如: ①. 12345 奇数位相加 1 + 3 + 5 = 9、偶数位相加 2 + 4 = 6,因此 12345 不是幸运数字; ②. 2332 奇数位相加 2 + 3 = 5、偶数位相加 3 + 2 = 5,因此 2332 是幸运数字。对于给定的 a 和 b,小小希望你求出 a, a + 1,…

填空题 困难

题目描述

幸运数字

如果把一个数字十进制表示的奇数位和偶数位分别相加得到的和相同,小小就认为它是一个幸运的数字。例如:

    ①. 12345 奇数位相加 1 + 3 + 5 = 9、偶数位相加 2 + 4 = 6,因此 12345 不是幸运数字;

    ②. 2332 奇数位相加 2 + 3 = 5、偶数位相加 3 + 2 = 5,因此 2332 是幸运数字。

对于给定的 a 和 b,小小希望你求出 a, a + 1, a + 2, …, b 中幸运数字的数量。

输入格式

输入数据仅一行,包含空格分隔的两个整数 a 和 b。

输出格式

输出一行一个整数,代表 a, a + 1, a + 2, …, b 中幸运数字的数量。

样例输入 1

1 100

样例输出 1

9

样例输入 2

4096 65536

样例输出 2

3454

数据规模

对于 100% 的数据,满足 1 ≤ a ≤ b ≤ 1, 000, 000。

参考答案

#include <iostream> #include <string> using namespace std; int main() { int a, b; cin >> a >> b; int count = 0; for (int i = a; i <= b; ++i) { string s = to_string(i); int odd_sum = 0, even_sum = 0; for (int j = 0; j < s.size(); ++j) { if (j % 2 == 0) { odd_sum += s[j] - '0'; } else { even_sum += s[j] - '0'; } } if (odd_sum == even_sum) { ++count; } } cout << count << endl; return 0; }

答案解析

注意:在计算奇数位和和偶数位和时,需要将字符型数字转换为整型数字,可以通过减去字符 '0' 实现。

上一题 下一题