题目描述

输入两个正整数 m 和 k,其中 1<m≤1015,1<k≤15,判断 m 是否恰好含有 k 个 3,如果满足条件,则输出 YES,否则,输出 NO

输入格式

输入一行,为两个整数 m,km,k,中间用单个空格间隔。

输出格式

满足条件,则输出 YES,否则,输出 NO

输入输出样例

输入 

43833 3

输出 

YES

代码

 

// 引入万能头文件,它包含了 C++ 标准库中大多数常用的头文件。
// 不过,它并非标准 C++ 的一部分,某些编译器可能不支持。
#include <bits/stdc++.h>
// 使用标准命名空间 std,这样在后续代码里使用标准库的类和函数时,
// 就无需添加 std:: 前缀,但可能会导致命名冲突。
using namespace std;

int main() {
    // 定义两个整型变量
    // m 用于存储用户输入的一个整数
    // k 用于存储用户输入的数字 3 的期望出现次数
    int m, k;
    // 从标准输入(通常是键盘)读取两个整数,分别赋值给 m 和 k
    cin >> m >> k;

    // 检查 m 是否能被 19 整除
    if (m % 19 != 0) {
        // 如果 m 不能被 19 整除,输出 "NO"
        cout << "NO";
        // 结束程序,返回 0 表示程序正常退出
        return 0;
    }

    // 定义一个计数器变量 cnt,用于统计 m 中数字 3 出现的次数,初始化为 0
    int cnt = 0;

    // 进入一个 while 循环,只要 m 不等于 0,就会继续循环
    while (m != 0) {
        // 获取 m 的个位数,使用取模运算得到
        int r = m % 10;
        // 检查个位数是否为 3
        if (r == 3) {
            // 如果个位数是 3,计数器 cnt 加 1
            cnt++;
        }
        // 去掉 m 的个位数,通过整除 10 实现
        m /= 10;
    }

    // 检查 m 中数字 3 出现的次数是否等于期望的次数 k
    if (cnt == k) {
        // 如果相等,输出 "YES"
        cout << "YES";
    } else {
        // 如果不相等,输出 "NO"
        cout << "NO";
    }

    // 主函数正常结束,返回 0 表示程序成功执行
    return 0;
}
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐