奖券数目
有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利。
虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求。某抽奖活动的奖券号码是5位数(10000-99999),要求其中不要出现带“4”的号码,主办单位请你计算一下,如果任何两张奖券不重号,最多可发出奖券多少张。
请提交该数字(一个整数),不要写任何多余的内容或说明性文字。
答案:52488
思路:
方法1:这个可以直接写10000-99999的循环,逐一枚举
方法2:写5层循环,每层循环代表每位数
方法一参考代码:
#include<iostream>
#include<sstream>
#include<string>
using namespace std;
int main()
{
int cnt = 0, flag = 0;//计数
string s;
for (int i = 10000; i <= 99999; i++)
{
flag = 0;
stringstream ss;
ss << i;
ss >> s;
for (int j = 0; j < s.length(); j++)
{
if (s[j] == '4')
{
flag = 1;
break;
}
}
if (flag == 0)
cnt++;
}
cout << cnt;
return 0;
}
方法二参考代码:
#include<iostream>
using namespace std;
int main()
{
int cnt = 0;
for (int a = 1; a <= 9; a++)
{
if (a != 4)
for (int b = 0; b <= 9; b++)
{
if (b != 4)
for (int c = 0; c <= 9; c++)
{
if (c != 4)
for (int d = 0; d <= 9; d++)
{
if (d != 4)
for (int e = 0; e <= 9; e++)
{
if (e != 4)
cnt++;
}
}
}
}
}
cout << cnt << endl;
return 0;
}