问题的重述:
有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利。
虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求。某抽奖活动的奖券号码是5位数(10000-99999),要求其中不要出现带“4”的号码,主办单位请你计算一下,如果任何两张奖券不重号,最多可发出奖券多少张。
问题的分析:抽奖活动的奖券号码是5位数,所以我们可以定义5个变量a,b,c,d,e来表示这五个数,从而可知,这五位数中的最高位是不可以为0和4的,即a=(1,2,3,5,6,7,8,9)共8个数,其余四位数除了不可以为四之外都行,即b=(0,1,2,3,5,6,7,8,9)共9位数,c=(0,1,2,3,5,6,7,8,9)共9位数,d=(0,1,2,3,5,6,7,8,9)共9位数,e=(0,1,2,3,5,6,7,8,9)共9位数;所以总共有8*9*9*9*9=52488种。
思路:可以通过循环来判断每一位数是否等于4来进行求解。
源码如下:
#include "stdafx.h"
#include<iostream>
using namespace std;
int fun()
{
int sum = 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) continue;
else sum++;
}
cout << sum << endl;
return 0;
}
int main()
{
fun();
return 0;
}
结果如下图: