MC0111配速&&MC0112白日梦Ⅰ

MC0111配速

难度: 白银    时间限制:1秒    占用内存:128M

小码哥参加了学校的定向越野比赛,赛完后,他踌躇满志地拿着自己的成绩单,看着一段段的数据,想算一下自己整场比赛的平均配速是多少。

但是刚赛完的他精疲力竭,加上成绩单上数据较多,小码哥口算起来非常困难,于是想请你编程帮他计算这个问题。

在这里,平均配速的含义为平均跑完一千米所用的时间。如果比赛有多段,平均配速为所用总时间比上总长度。

输入格式:

输入包含若干行,每行包含小码哥赛程中一段的信息。
每段的信息被空格分为两个部分:第一个部分是一个整数(单位为米,范围为(0,1000]),表示这一赛段的长度;第二个部分呈现为XX:XX的形式,解读为XX分XX秒,表示小码哥跑完这段的用时。(其中XX都是0~9的整数。并且,第二部分的时间是符合常理表示的,也就是说范围为00:01~59:59,诸如01:61的表示是不合法的。)
保证输入数据是合法形式表示,保证总的输入行数不超过20。

输出格式:

输出仅包含一行,代表小码哥整场比赛的平均配速,表示为XX:XX的形式(同输入部分描述),其中不足一秒的部分直接舍去。
数据保证输

出可以表示为合法的形式。

算法思想:

我们可以按照输入格式逐行读取比赛的每个阶段,然后将每个阶段的时间转换为秒,计算总距离和总时间。最后,通过总时间除以总距离来计算平均配速,并将结果格式化为 XX:XX 的形式输出。

下面这段代码的思路是累计每个赛段的总时间和总距离,然后通过总时间除以总距离得到平均配速,最后将平均配速格式化输出。

#include<stdio.h>
int main() 
{ 
    double a;
    char b[10];
    int e=0;
    double f=0;
    while(scanf("%lf %s",&a,b)!=EOF) {
        e+=((b[0]-48)*10+b[1]-48)*60+((b[3]-48)*10+b[4]-48);
        f+=a;
    }
    f=e/f;
    f*=1000;
    printf("%02d:%02d",(int)f/60,(int)f%60);    
    return 0; 
}

MC0112白日梦Ⅰ

难度: 青铜    时间限制:3秒   占用内存:128M

有一天,小码哥做了一个白日梦:他获得了未来n天的美元英镑汇率表。

在梦中,小码哥一开始只有10美元,未来n天内,他可以在某一天把美元兑换成英镑,持有一段时间后再换回美元。

小码哥想知道,如果只允许来回兑换一次(也可以不兑换),他n天后最多能有多少美元。

输入格式:

输入的第一行为一个整数n(2≤n≤10^5)
接下来一行n个用空格隔开的整数,第i个数字ai表示汇率情况:第i天1美元可以与ai/10000英镑相互兑换。(其中1≤ai≤20000)

输出格式:

输出一行一个浮点数,表示小码哥n天后最多能有多少美元。(请四舍五入保留两位小数输出)

算法思想:

这个问题可以通过贪心算法解决。具体来说,我们可以找到汇率最低的一天买入美元,然后找到汇率最高的一天卖出美元,这样可以保证最大化收益。 这段代码的核心思想是通过两层循环遍历所有可能的买卖日期组合,计算每一种组合下的收益,然后找出最大的收益作为结果输出。

#include<stdio.h>
int min(int* arr){
    int min=arr[0];
    for(int i=0;i<sizeof(arr);i++){
        if(min>arr[i]&&arr[i]>0){
            min=arr[i];
        }
    }
    return min;
}
int max(int* arr){
    int max=arr[0];
    for(int i=0;i<sizeof(arr);i++){
        if(max<arr[i]){
            max=arr[i];
        }
    }
    return max;
}
int main() 
{ 
    int n;
    int a[100000];
    float b=10.0;
    float temp;
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        scanf("%d",&a[i]);
    }
    for(int i=0;i<n;i++){
        for(int j=i;j<n;j++){
            temp=10.0;
            temp*=a[i];
            temp/=a[j];
            if(temp>b){
                b=temp;
            }
        } 
    }   
    printf("%.2f",b);
    return 0; 
}

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

钻仰弥坚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值