一、题目链接
http://noi.openjudge.cn/ch0105/30/
二、解题思路
◎ 显然,给定整数m能被19整除,才需要进一步统计数字3的个数,否则直接输出NO;
◎ 如果m能被19整除:
→ 在m不等于0时,循环获取m的每一位数字:
*** 如果当前个位数为3,计数器加1;
*** 移除当前个位数;
→ 循环结束后,如果计数器等于k,输出YES,否则输出NO;
否则,输出NO。
三、实施步骤
◎ 首先,定义并输入两个int类型的整数m、k,分别代表给定的整数、题目要求的数字3的个数;
◎ 其次,定义int类型的整数three,代表m中数字3的计数器,初始时three为0;
◎ 如果m%19==0:
→ 在m!=0时,循环处理如下;
*** 如果m%10==3:令three++;
*** 令m=m/10;
→ 如果three==k:输出YES;
否则:输出NO;
否则:输出NO。
四、C++程序
#include <iostream>
using namespace std;
int main()
{
int m;
int k;
cin >> m;
cin >> k;
int three = 0;
if (m % 19 == 0)
{
while (m != 0)
{
if (m % 10 == 3)
{
three++;
}
m = m / 10;
}
if (three == k)
{
cout << "YES";
}
else
{
cout << "NO";
}
}
else
{
cout << "NO";
}
return 0;
}