蓝桥杯每日一刷(第一天)

简介: 蓝桥杯每日一刷(第一天)

前言

距离蓝桥杯还剩短短俩个月的时间,最后的号角已经吹响,没有撤退可言!

最后的时间如果要彻底的搞懂比赛所需的算法,很难,但是最后的成绩可能也不是很好,所以我们用真题+解析的形式来做最后的冲刺!

话不多说,开启我们的第一天!

2015年b组:奖券数目

有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利。
虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求。某抽奖活动的奖券号码是5位数(10000-99999),要求其中不要出现带“4”的号码,主办单位请你计算一下,如果任何两张奖券不重号,最多可发出奖券多少张。
请提交该数字(一个整数),不要写任何多余的内容或说明性文字。

思路:不要4,在5位数中剔除4即可,枚举,累加没有4的,下面我们用代码来实现一下这个操作、

#include<iostream>
using namespace std;
//筛选出不含4的数
bool check(int x) {
    while (x) {
        if (x % 4 == 0)
            return false;
        x /= 10;
    }
    return true;
}
int main()
{
    int sum = 0;//定义数目
    for (int i = 10000; i <= 99999; i++) {
        if (check(i))    sum++;
    }
    cout << sum;
    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;
}

2015b 星系炸弹

在X星系的广袤空间中漂浮着许多X星人造“炸弹”,用来作为宇宙中的路标。
每个炸弹都可以设定多少天之后爆炸。
比如:阿尔法炸弹2015年1月1日放置, 定时为15天,则它在2015年1月16日爆炸
有一个贝塔炸弹,2014年11月9日放置,定时为1000天,请你计算它 爆炸的准确日期。

请填写该日期,格式为 yyyy-mm-dd 即4位年份2位月份2位日期。比如:2015-02-19
请严格按照格式书写。不能出现其它文字或符号。

实际上在蓝桥杯中碰到时间问题填空的情况下,excel是最简单的,我们先来用excel来得出结果,最后再用代码实现一遍
在这里插入图片描述
不怕你们笑话我,答案是2017-08-05,定时1000天,看比如,所以说不要在这里踩坑,下面我们看代码实现

#include<iostream>
using namespace std;
//判断平年闰年
int days[13] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
bool check(int x) {
    if (x % 400 == 0 || (x % 100 != 0 && x % 4 != 0)) {
        return true;
    }
    return false;
}
int main() {
    bool is_run = false;
    int y = 2014, m = 11, d = 9;
    for (int i = 1; i <= 1001; i++) {
        d++;
        if (m == 2) {
            if (is_run) {
                if (d >= 29) m++, d = 0;
            }
            else {
                if (d >= 28) m++, d = 0;
            }

        }
        else if (d >= days[m - 1]) m++, d = 0;
        if (m > 12) {
            y++;
            m = 1;
            is_run = check(y);
        }
    }
    printf("%d-%02d-%02d", y, m, d);
    return 0;
}

2015 b 三羊献瑞

在这里插入图片描述

其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。
请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。

思路:乍一看没有思路,我们仔细来看(纯废话……)
填空题,没有任何的限制,直接暴力吧,后面我们再看,要脑子的算法

#include<iostream>
using namespace std;
int main()
{
    int a,b,c,d,f,g,h;
    int numOne,numTwo,sum;
    for(a=2;a<=9;a++)
    {
        for(b=0;b<=9;b++)
        {
            for(c=0;c<=9;c++)
            {
                for(d=0;d<=9;d++)
                {
                    for(f=0;f<=9;f++)
                    {
                        for(g=0;g<=9;g++)
                        {
                            for(h=0;h<=9;h++)
                            {
                                if(a!=b && a!=c && a!=d && a!=f && a!=g && a!=h
                                && b!=c && b!=d && b!=f && b!= g &&b!=h
                                && c!=d && c!=f && c!= g && c!=h
                                && d!=f && d!=g &&d!=h
                                && f!=g && f!=h
                                && g!=h
                                && a!=1 && b!=1 && c!=1 && d!=1 && f!=1 && g!=1 && h!=1)
                                {
                                    numOne=a*1000 + b*100 + c*10 + d;
                                    numTwo=1*1000 + f*100 + g*10 + b;
                                    sum=1*10000 + f*1000 + c*100 + b*10 + h;
                                    if(sum==(numOne + numTwo))
                                    {
                                        cout<<1<<f<<g<<b<<endl;
                                    }                        
                                }    
                            }                            
                        }
                    }
                }
            }
        }        
    }
    return 0;
} 

我们把每个数字都带进去进行一个简单的推导
在这里插入图片描述

#include<iostream>
using namespace std;
int main() {
    for (int b = 2; b <= 6; b++) {
        for (int d = 2; d <= 7; d++) {
            if (d == b)    continue;
            if (d == b + 1) continue;
            if (b + d <= 10)    continue;
            int h = b + d - 10;
            if (h == b || h == d || h == b + 1)    continue;
            printf("%d%d%d%d\n", 1, 0, 8, b);
        }
    }
    return 0;
}

最后

今天我们就刷这几个题,题不算难,但是都是真题,坚持下去,时间会给出答案!

相关文章
|
算法 C++
蓝桥杯每日一刷(第四天2016)
蓝桥杯每日一刷(第四天2016)
|
算法 C++
蓝桥杯每日一刷(第三天)
蓝桥杯每日一刷(第三天)
107 0
|
算法
蓝桥杯每日一刷(第二天)
蓝桥杯每日一刷(第二天)
118 0
|
3月前
|
人工智能 算法 Java
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1005 数字游戏
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1005 数字游戏
57 0
|
3月前
|
Java C语言 C++
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1000 kAc给糖果你吃
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1000 kAc给糖果你吃
42 0
|
3月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-999 数的潜能
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-999 数的潜能
40 0
|
3月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-997 粘木棍
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-997 粘木棍
50 0
|
3月前
|
机器学习/深度学习 算法 Java
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-996 车的放置
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-996 车的放置
43 0
|
3月前
|
人工智能 算法 Java
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-992 士兵杀敌(二)
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-992 士兵杀敌(二)
27 1
|
3月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-986 藏匿的刺客
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-986 藏匿的刺客
45 0