蓝桥杯day7

打印图形

题解:代码填空题中,目前有两大类,一种是递归,另一种是其他。根据上下代码进行判断,蒙((* ̄︶ ̄))。

奇怪的分式

上小学的时候,小明经常自己发明新算法。一次,老师出的题目是:1/4 乘以 8/5 小明居然把分子拼接在一起,分母拼接在一起,答案是:18/45 (参见图1.png)老师刚想批评他,转念一想,这个答案凑巧也对啊,真是见鬼! 对于分子、分母都是 1~9 中的一位数的情况,还有哪些算式可以这样计算呢? 请写出所有不同算式的个数(包括题中举例的)。显然,交换分子分母后,例如:4/1 乘以 5/8 是满足要求的,这算做不同的算式。但对于分子分母相同的情况,2/2 乘以 3/3 这样的类型太多了,不在计数之列!

注意:答案是个整数(考虑对称性,肯定是偶数)。请通过浏览器提交。不要书写多余的内容。

蚂蚁感冒

长100厘米的细长直杆子上有n只蚂蚁。它们的头有的朝左,有的朝右。 每只蚂蚁都只能沿着杆子向前爬,速度是1厘米/秒。当两只蚂蚁碰面时,它们会同时掉头往相反的方向爬行。这些蚂蚁中,有1只蚂蚁感冒了。并且在和其它蚂蚁碰面时,会把感冒传染给碰到的蚂蚁。请你计算,当所有蚂蚁都爬离杆子时,有多少只蚂蚁患上了感冒。
【数据格式】
第一行输入一个整数n (1 < n < 50), 表示蚂蚁的总数。
接着的一行是n个用空格分开的整数 Xi (-100 < Xi < 100), Xi的绝对值,表示蚂蚁离开杆子左边端点的距离。正值表示头朝右,负值表示头朝左,数据中不会出现0值,也不会出现两只蚂蚁占用同一位置。其中,第一个数据代表的蚂蚁感冒了。
要求输出1个整数,表示最后感冒蚂蚁的数目。
例如,输入:
3
5 -2 8
程序应输出:
1
再例如,输入:
5
-10 8 -20 12 25
程序应输出:
3

题解:该题目也可以说是一个找规律的,是一道思维题,该规律即是:所有与感冒的蚂蚁相对的蚂蚁都将被感染。

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;

typedef struct
{
    int s;
    int abs;
}node;

node a[50];
int counter=0;
int main()
{
    int n,i=0;
    node temp;
    node tt;
    cin>>n;
    getchar();
    while(n)
    {
        cin>>a[i].s;
        if(i==0)
        {
            tt.s=a[i].s;
        }
        if(a[i].s<0)
        {
            a[i].s=-a[i].s;
            a[i].abs=-1;
        }
        else
        {
            a[i].abs=1;
        }
        i++;
        n--;
    }

    //排序算法
    for(int j=0;j<i-1;j++)
    {
        int m=j;
        for(int k=j+1;k<i;k++)
            if(a[m].s>a[k].s)
                m=k;
        if(m!=j)
        {
            temp.s=a[m].s;temp.abs=a[m].abs;
            a[m].s=a[j].s;a[m].abs=a[j].abs;
            a[j].s=temp.s;a[j].abs=temp.abs;
        }
    }
    if(tt.s<0)
        tt.s=-tt.s;

    int m;
    for(int j=0;j<i;j++)
    {
        if(a[j].s==tt.s)
        {
            m=j;
            break;
        }
    }
    int z;
    if(a[m].abs==-1)
        z=-1;
    if(z==-1)
    {
        for(int j=0;j<m;j++)
        {
            if(a[j].abs==1)
                counter++;
        }
        if(counter!=0)
        {
            for(int j=m+1;j<i;j++)
            {
                if(a[j].abs==-1)
                    counter++;
            }
        }
    }
    if(z==1)
    {
        for(int j=m+1;j<i;j++)
        {
            if(a[j].abs==-1)
                counter++;
        }
        if(counter!=0)
        {
            for(int j=0;j<m;j++)
            {
                if(a[j].abs==1)
                    counter++;
            }
        }
    }
    cout<<counter+1;
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于计算机专业的学生而言,参加各类比赛能够带来多方面的益处,具体包括但不限于以下几点: 技能提升: 参与比赛促使学生深入学习和掌握计算机领域的专业知识与技能,如编程语言、算法设计、软件工程、网络安全等。 比赛通常涉及实际问题的解决,有助于将理论知识应用于实践中,增强问题解决能力。 实践经验: 大多数比赛都要求参赛者设计并实现解决方案,这提供了宝贵的动手操作机会,有助于积累项目经验。 实践经验对于计算机专业的学生尤为重要,因为雇主往往更青睐有实际项目背景的候选人。 团队合作: 许多比赛鼓励团队协作,这有助于培养学生的团队精神、沟通技巧和领导能力。 团队合作还能促进学生之间的知识共享和思维碰撞,有助于形成更全面的解决方案。 职业发展: 获奖经历可以显著增强简历的吸引力,为求职或继续深造提供有力支持。 某些比赛可能直接与企业合作,提供实习、工作机会或奖学金,为学生的职业生涯打开更多门路。 网络拓展: 比赛是结识同行业人才的好机会,可以帮助学生建立行业联系,这对于未来的职业发展非常重要。 奖金与荣誉: 许多比赛提供奖金或奖品,这不仅能给予学生经济上的奖励,还能增强其成就感和自信心。 荣誉证书或奖状可以证明学生的成就,对个人品牌建设有积极作用。 创新与研究: 参加比赛可以激发学生的创新思维,推动科研项目的开展,有时甚至能促成学术论文的发表。 个人成长: 在准备和参加比赛的过程中,学生将面临压力与挑战,这有助于培养良好的心理素质和抗压能力。 自我挑战和克服困难的经历对个人成长有着深远的影响。 综上所述,参加计算机领域的比赛对于学生来说是一个全面发展的平台,不仅可以提升专业技能,还能增强团队协作、沟通、解决问题的能力,并为未来的职业生涯奠定坚实的基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值