奖券数目
有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利。
虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求。某抽奖活动的奖券号码是5位数(10000-99999),要求其中不要出现带“4”的号码,主办单位请你计算一下,如果任何两张奖券不重号,最多可发出奖券多少张。
请提交该数字(一个整数),不要写任何多余的内容或说明性文字。
分析:有两种方法,直接看代码吧
答案:52488
方法一:
#include <iostream>
using namespace std;
bool f(int n)
{
while(n>0)
{
int t=n%10;
n/=10;
if(t==4)
return false;
}
return true;
}
int main()
{
string s;
int ans=0;
for(int i=10000;i<=99999;i++)
{
if(f(i))
ans++;
}
cout<<ans<<endl;
return 0;
}
方法二:
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
void itos(int &x,string &s)
{
stringstream ss;
ss<<x;
ss>>s;
}
int main()
{
string s;
int ans=0;
for(int i=10000;i<=99999;i++)
{
itos(i,s);
if(s.find("4")==string::npos)
ans++;
}
cout<<ans<<endl;
return 0;
}