奖券数目
有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利。
虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求。某抽奖活动的奖券号码是5位数(10000-99999),要求其中不要出现带“4”的号码,主办单位请你计算一下,如果任何两张奖券不重号,最多可发出奖券多少张。
有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利。
虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求。某抽奖活动的奖券号码是5位数(10000-99999),要求其中不要出现带“4”的号码,主办单位请你计算一下,如果任何两张奖券不重号,最多可发出奖券多少张。
思路:循环遍历每一位数字的情况,除去带有”4“的。第一位从不能取0,所以从1开始。
#include<iostream>
using namespace std;
int main()
{
int i1,i2,i3,i4,i5;
int sum=0;
for(i1=1;i1<=9;++i1)//第一位
{
for(i2=0;i2<=9;++i2)//第二位
{
for(i3=0;i3<=9;++i3)//第三位
{
for(i4=0;i4<=9;++i4)//第四位
{
for(i5=0;i5<=9;++i5)//第五位
{
if(i1==4||i2==4||i3==4||i4==4||i5==4)
continue;//continue跳过本次循环,进入下一次。break直接跳出循环。
else
sum++;
}
}
}
}
}
cout<<sum<<endl;//52488
return 0;
}
数学解法:
最高位除了0、4不能使用,其余8个数字(1,2,3,5,6,7,8,9)均能使用,剩下的四位(千位、百位、十位、个位)可以使用除了4以外的所有数字,所以共有 8*9*9*9*9种解,计算得答案为:52488。