题解:P12163 [蓝桥杯 2025 省 C/Java A] 2025

· · 题解

洛谷P12163

题目传送门

题意

求 1∼20250412 中,有多少个数含有至少 1 个 0、2 个 2、1 个 5 的数。

思路分析

使用暴力枚举 1~20250412 之间的每一个数,将其数位分离,分离出每一个数,如:202250 分离为 153220,符合题目要求,所以 202250 是一个满足要求的数。所以将答案计数器 ans 增加。最后将答案计数器ans输出即可。

代码

代码仅供参考,抄题解可耻

#include <bits/stdc++.h>
using namespace std;
int ans, a0, a2, a5;//存储各数字数量

int main() {
    for (int i = 1; i <= 20250412; i++) {//枚举1~20250412之间的每一个数
        int a = i;
        while (a) {//数位分离
            int h = a % 10;
            a /= 10;
            if (h == 0) {
                a0++;
            }
            if (h == 2) {
                a2++;
            }
            if (h == 5) {
                a5++;
            }//增加计数器
        }
        if (a0 >= 1 && a2 >= 2 && a5 >= 1) {
            ans++;
        }//判断是否满足要求
        a0 = a2 = a5 = 0;//清空计数器
    }
    cout << ans;//输出
    return 0;
}

#include <bits/stdc++.h>
using namespace std;

int main() {
    cout <<506754;//直接输出答案
    return 0;
}