30:含k个3的数

一、题目链接

http://noi.openjudge.cn/ch0105/30/

二、解题思路

◎ 显然,给定整数m能被19整除,才需要进一步统计数字3的个数,否则直接输出NO;
◎ 如果m能被19整除:循环获取m的每一位数字并判断是否为3,同步更新计数器;循环结束后,如果计数器等于k,输出YES,否则输出NO。

三、实施步骤

◎ 定义并输入两个int类型的整数m、k,分别代表给定的整数、题目要求的数字3的个数;
◎ 定义int类型的整数three=0,代表m中数字3的计数器;
◎ if m%19==0:
      while m!=0:
	     if m%10==3:令three++;
	     令m=m/10;
      if three==k:输出YES;
	  else:输出NO;
   else:输出NO。

四、Java程序

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int m = input.nextInt(); // 给定的整数
        int k = input.nextInt(); // 题目要求的数字3的个数
        int three = 0; // m中数字3的计数器,初始时为0
        if (m % 19 == 0) { // 如果m能被19整除
            /* 在m不等于0时 */
            while (m != 0) {
                if (m % 10 == 3) { // 如果m的个位数为3
                    three++; // 计数器加1
                }
                m = m / 10; // 移除m的个位数
            }
            if (three == k) { // 如果m中恰好包含k个3
                System.out.print("YES"); // 输出YES
            }
            else { // 否则,m中不是恰好包含k个3
                System.out.print("NO"); // 输出NO
            }
        }
        else { // 否则,m不能被19整除
            System.out.print("NO"); // 输出NO
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江苏科技大学_计算机学院_潘磊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值