蓝桥杯day8


2015年第六届C/C++ B组省赛真题

1.奖券数目

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

题解:
方法一:用暴力5层循环实现。每一层循环的数字不能等于4就行。
(推荐)方法二:利于高中所学的排列组合解决:
对于最高位:只能为1,2,3,5,6,7,8,9共8种。
对于千,百,十,个位:只能为0,1,2,3,5,6,7,8,9共9种。
所以总共有89999=52488;

2.星系炸弹

在X星系的广袤空间中漂浮着许多X星人造“炸弹”,用来作为宇宙中的路标。
每个炸弹都可以设定多少天之后爆炸。
比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2015年1月16日爆炸。
有一个贝塔炸弹,2014年11月9日放置,定时为1000天,请你计算它爆炸的准确日期。
请填写该日期,格式为 yyyy-mm-dd 即4位年份2位月份2位日期。比如:2015-02-19
请严格按照格式书写。不能出现其它文字或符号。

题解:
判断年份是否为润平年。所以简洁做法:21+31+365+366+31+28+31+30+31+30+31+5=10000;
得出:2017-08-05;

编程实现:

#include <iostream>
using namespace std;
bool run(int y)
{
    if((y%4==0&&y%100!=0)||y%400==0)
        return true;
    else
        return false;
}
int main()
{
    int y=2014;
    int ds=1000+31+28+31+30+31+30+31+31+30+31+9;//从2014-0-0开始计算
    int ms[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    //计算年
    while(1)
    {
        int dys;
        if(run(y))
            dys=366;
        else
            dys=365;
        if(ds<dys)
            break;
        ds-=dys;
        y++;
    }
    if(run(y))
        ms[1]=29;
    //计算月
    for(int i=0;i<12;i++)
    {
        if(ds<=ms[i])
        {
            cout<<y<<'-';
            cout<<i+1<<'-';
            cout<<ds;
            break;
        }
        else
        {
            ds-=ms[i];
        }
    }
    return 0;
}

3.三羊献瑞

观察下面的加法算式:

    祥 瑞 生 辉
  • 三 羊 献 瑞

三 羊 生 瑞 气

其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。

请你输出“三羊献瑞”所代表的 4位数字(答案唯一)。

题解:
方法一:采用7层循环输出查找。
方法二:采用全排列进行。

#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
    int arr[10]={0,1,2,3,4,5,6,7,8,9};
    do//使用do while才不会把初始的情况给漏掉
    {
        if(arr[0]!=0&&arr[4]!=0)
        {
            int a=arr[0]*1000+arr[1]*100+arr[2]*10+arr[3];
            int b=arr[4]*1000+arr[5]*100+arr[6]*10+arr[1];
            int z=arr[4]*10000+arr[5]*1000+arr[2]*100+arr[1]*10+arr[7];
            if(a+b==z)
            {
                cout<<b;
                break;
            }
        }

    }while(next_permutation(arr,arr+10));
    return 0;
}

4.格子中输出

考察占位符知识:占位符

题解:两边所占的空格要相等

(width-2-strlen(buf))/2," “,s,(width-2-strlen(buf))/2,” "

内容概要:本文详细介绍了一种基于Simulink的表贴式永磁同步电机(SPMSM)有限控制集模型预测电流控制(FCS-MPCC)仿真系统。通过构建PMSM数学模型、坐标变换、MPC控制器、SVPWM调制等模块,实现了对电机定子电流的高精度跟踪控制,具备快速动态响应和低稳态误差的特点。文中提供了完整的仿真建模步骤、关键参数设置、核心MATLAB函数代码及仿真结果分析,涵盖转速、电流、转矩和三相电流波形,验证了MPC控制策略在动态性能、稳态精度和抗负载扰动方面的优越性,并提出了参数自整定、加权代价函数、模型预测转矩控制和弱磁扩速等优化方向。; 适合人群:自动化、电气工程及其相关专业本科生、研究生,以及从事电机控制算法研究与仿真的工程技术人员;具备一定的电机原理、自动控制理论和Simulink仿真基础者更佳; 使用场景及目标:①用于永磁同步电机模型预测控制的教学演示、课程设计或毕业设计项目;②作为电机先进控制算法(如MPC、MPTC)的仿真验证平台;③支撑科研中对控制性能优化(如动态响应、抗干扰能力)的研究需求; 阅读建议:建议读者结合Simulink环境动手搭建模型,深入理解各模块间的信号流向与控制逻辑,重点掌握预测模型构建、代价函数设计与开关状态选择机制,并可通过修改电机参数或控制策略进行拓展实验,以增强实践与创新能力。
### 蓝桥杯 Java 第一天 学习资料与教程 对于希望参与蓝桥杯竞赛并专注于Java编程的学习者而言,初期准备阶段至关重要。首日的学习应当聚焦于夯实基础概念和技术要点。 #### 基础知识回顾 在开始深入研究之前,建议复习计算机科学的基础理论和算法设计原则。这不仅有助于理解后续更复杂的内容,还能提高解决问题的能力[^3]。 #### 获取高质量资源 由于优快云平台对上传图片的质量有限制,因此推荐通过其他渠道获得详细的电子版教材。例如,在微信公众号【一只阿欢】中回复特定关键词可以得到关于蓝桥杯Java B组学习材料、文件操作指南及考试重点解析的PDF文档下载链接[^1]。 #### 实践练习 为了更好地掌握所学的知识点,应该积极参与实际编码训练。可以从简单的例子入手,比如编写计算日期天数的小程序来熟悉语法结构: ```java public class Main { public static void main(String[] args) { System.out.println(31 + 29 + 31 + 30 + 4); } } ``` 这段代码展示了如何利用基本算术运算实现功能需求[^2]。 #### 数据结构入门 了解常用的数据结构也是必不可少的一部分。以`TreeSet`为例,这是一种能够自动维护元素顺序集合类;当自定义比较器时,则可以根据指定规则来进行排序处理: ```java import java.util.*; class MyClass implements Comparable<MyClass> { int a; int b; public MyClass(int a, int b) { this.a = a; this.b = b; } @Override public String toString() { return "MyClass{" + "a=" + a + ", b=" + b + '}'; } @Override public int compareTo(MyClass o) { if (this.a != o.a) return Integer.compare(this.a, o.a); else return Integer.compare(this.b, o.b); } } class MyComparator implements Comparator<MyClass> { @Override public int compare(MyClass m1, MyClass m2) { if (m1.a != m2.a) return Integer.compare(m1.a, m2.a); else return Integer.compare(m1.b, m2.b); } } public class TreeSetExample { public static void main(String[] args) { TreeSet<MyClass> treeSet = new TreeSet<>(new MyComparator()); treeSet.add(new MyClass(1, 2)); treeSet.add(new MyClass(2, 2)); treeSet.add(new MyClass(2, 3)); treeSet.add(new MyClass(4, 3)); treeSet.add(new MyClass(5, 6)); treeSet.add(new MyClass(7, 3)); Iterator<MyClass> it = treeSet.iterator(); while (it.hasNext()) { System.out.println(it.next().toString()); } } } ``` 此段代码说明了如何创建带有自定义比较逻辑的`TreeSet`实例,并向其中添加对象后遍历输出结果。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值