第六届蓝桥杯大赛省赛C语言B组-填空题-奖券数目(Java实现)


奖券数目

有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利。
虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求。某抽奖活动的奖券号码是5位数(10000-99999),要求其中不要出现带“4”的号码,主办单位请你计算一下,如果任何两张奖券不重号,最多可发出奖券多少张。

请提交该数字(一个整数),不要写任何多余的内容或说明性文字。

 

方法一:使用数学的排列组合直接算出来

a可以取的数字有:1-9,不选4的情况有8

bcde可以取的数字有:0-9,不选4的情况有9

答案:8*9*9*9*9=52488

 

 

方法二:暴力枚举,写5层循环,每层循环代表每位数

public class _奖券数目 {

    public static void main(String[] args) {

         int count = 0;

         for(int a=1; a<=9; a++) {

             for(int b=0; b<=9; b++) {

                  for(int c=0; c<=9; c++) {

                      for(int d=0; d<=9; d++) {

                          for(int e=0; e<=9; e++) {

                               if(a!=4 && b!=4 && c!=4 && d!=4 && e!=4)

                                   count++;

                          }

                      }

                  }

             }

         }

         System.out.println(count);

    }

}

方法三:直接写10000-99999的循环,逐一枚举

public class _奖券数目3 {

    public static void main(String[] args) {

         int count = 0;

         for(int i=10000; i<=99999; i++) {

             //将10000-99999之间的所有5位数都逐个分解成5个1位数, 之后逐个数字判断是否为数字4

             if(i/10000!=4 && i/1000%10!=4 && i/100%10!=4 && i/10%10!=4 && i%10!=4)

                  count++;

         }

         System.out.println(count);

    }

}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值