[B3786] [信息与未来 2023] 幸运数字 题解

· · 题解

题目链接

洛谷

题目解法

遍历 [a,b] 判断每个数是否为幸运数字,如果是,cnt 增加一,最后输出 cnt

如何判断幸运数字呢?

我们可以用 to_string 函数先将变量转换为字符串,方便我们统计奇数位之和与偶数位之和。

接下来遍历字符串,用变量 oddeven 分别记录奇数位和偶数位的和,如果这一位是奇数位,则 odd 加上这一位上的数,否则 even 加上这一位上的数。统计完成后,比较 oddeven 的大小,如果相等,则这个数为幸运数字,否则不是。

AC Code

/*
Problem:
B3786 [信息与未来 2023] 幸运数字
By:
qifan_maker
*/
#include <bits/stdc++.h>
using namespace std;
bool check(int x){
    string y = to_string(x);
    int odd=0,even=0;
    for (int i=0;i<y.size();i++){
        if (i%2 == 0){
            odd += y[i]-'0';
        }
        else {
            even += y[i]-'0';
        }
    }
    return odd == even;
}
int main(){
    int a,b;
    cin >> a >> b;
    int cnt=0;
    for (;a<=b;a++){
        if (check(a)){
            cnt++;
        }
    }
    cout << cnt;
    return 0;
}