蓝桥杯1-穷举

来源:互联网 发布:怎么样注册农村淘宝 编辑:程序博客网 时间:2024/05/29 15:08
//奖券数目//有些人很迷信数字,比如带“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;}





0 0
原创粉丝点击