//奖券数目
//有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利。
//虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求。
//某抽奖活动的奖券号码是5位数(10000-99999),要求其中不要出现带“4”的号码,
//主办单位请你计算一下,如果任何两张奖券不重号,最多可发出奖券多少张。
//思路:循环遍历每一位数字的情况,除去带有”4“的。第一位从不能取0,所以从1开始。
#include <iostream>
using namespace std;
int main()
{
int count=0;
for(int i=1; i<10; i++)
{
if(i==4)
continue;
for(int j=0; j<10; j++)
{
if(j==4)
continue;
for(int k=0; k<10; k++)
{
if(k==4)
continue;
for(int l=0; l<10; l++)
{
if(l==4)
continue;
for(int m=0; m<10; m++)
{
if(m==4)
continue;
count++;
}
}
}
}
}
cout<<count<<endl;
return 0;
}
或者
#include <iostream>
using namespace std;
int main()
{
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;
}
//三人年龄
//三个神秘蒙面人来访F博士。
//博士询问他们年龄时,他们说:我们中年龄最小的不超过19岁。我们3人年龄总和为70岁。且我们三人年龄的乘积是所有可能情况中最大的。
//请帮助F博士计算他们的年龄,从小到大排列,用逗号分开。
//参考答案:
//19,25,26
//解答:
#include <iostream>
using namespace std;
int main()
{
int s=0,x=0,y=0,z=0;
int max=0;
for(int i=1; i<20; i++)
{
for(int j=1; j<70; j++)
{
for(int k=1; k<70; k++)
{
s=i*j*k;
if((i+j+k)==70&&s>max)
{
max=s;
x=i;
y=j;
z=k;
}
}
}
}
cout<<x<<","<<y<<","<<z<<endl;
return 0;
}
// 古堡算式
// 福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式:
// ABCDE * ? = EDCBA
// 他对华生说:“ABCDE应该代表不同的数字,问号也代表某个数字!”
// 华生:“我猜也是!”
// 于是,两人沉默了好久,还是没有算出合适的结果来。
// 请你利用计算机的优势,找到破解的答案。
// 把 ABCDE 所代表的数字写出来。
// 答案写在“解答.txt”中,不要写在这里!
//解答:
#include <iostream>
using namespace std;
int main()
{
int a,b,c,d,e;
for(int a=0;a<10;a++)
{
for(int b=0;b<10;b++)
{
if(a==b)
{
continue; //当a=b时,跳过下面的所有语句,直接执行b++.
//即跳出for的本次循环.
}
for(int c=0;c<10;c++)
{
if(c==a||c==b)
{
continue;
}
for(int d=0;d<10;d++)
{
if(d==a||d==b||d==c)
{
continue;
}
for(int e=0;e<10;e++)
{
if(e==a||e==b||e==c||e==d)
{
continue;
}
for(int h=0;h<10;h++)
{
int f=e+d*10+c*100+b*1000+a*10000;
int g=a+b*10+c*100+d*1000+e*10000;
if(f*h==g)
{
cout<<a<<b<<c<<d<<e<<endl;
}
}
}
}
}
}
}
return 0;
}
//参考答案:
//21978
// 猜生日
//今年的植树节(2012年3月12日),小明和他的叔叔还有小伙伴们一起去植树。休息的时候,小明的同学问他叔叔多大年纪,他叔叔说:“我说个题目,看你们谁先猜出来!”
//“把我出生的年月日连起来拼成一个8位数(月、日不足两位前补0)正好可以被今天的年、月、日整除!”
//他想了想,又补充到:“再给个提示,我是6月出生的。”
//根据这些信息,请你帮小明算一下,他叔叔的出生年月日。
//答案写在“解答.txt”中,不要写在这里!
//格式是年月日连成的8位数。
//例如,如果是1948年6月12日,就写:19480612
//参考答案:
//19550604
//解答:
#include <iostream>
using namespace std;
void judge(int a,int b,int c,int d,int e,int f,int g,int h)
{
if((a*1000+b*100+c*10+d>=1900)&&(a*1000+b*100+c*10+d<2012)&&(e*10+f<=12)&&(g*10+h<=31))
{
long long sum=a*10000000+b*1000000+c*100000+d*10000+e*1000+f*100+g*10+h;
if(sum%2012==0&&sum%3==0&&sum%12==0)
cout<<a<<b<<c<<d<<e<<f<<g<<h<<endl;
}
}
int main()
{
for(int a=1; a<=2; a++)
{
for(int b=0; b<=9; b++)
{
for(int c=0; c<=9; c++)
{
for(int d=0; d<=9; d++)
{
for(int g=0; g<=3; g++)
{
for(int h=0; h<=9; h++)
{
judge(a,b,c,d,0,6,g,h);
}
}
}
}
}
}
return 0;
}