解题思路:最为重要的想清楚题目中间涉及的做题时间,做完最后一题是不同休息的,可以用到等差数列求和完成本题。
注意事项:总时间=做题时间+休息时间
参考代码:
完整代码:
#include<stdio.h>
int main(void)
{
int T;
scanf("%d",&T);
while(T--)
{
long long n,t1,d1,t2,d2;
scanf("%lld %lld %lld %lld %lld",&n,&t1,&d1,&t2,&d2);
long long blue = n*t1+d1*n*(n-1)/2;
long long red =n*t2+d2*n*(n-1)/2;
if(blue<red)
{
printf("BLUE\n");
}
else
if(red<blue)
{
printf("RED\n");
}
else
{
printf("DRAW\n");
}
}
return 0;
}
以下是对于零基础的解释:
#include<stdio.h>
int main(void)
【(void):这个函数不接受任何的参数,意思是不用加入别的就可以直接启用。】
{
int T;
【定义整型变量T,因为题目告诉我们有T组数据,T是数组】
scanf("%d",&T);
【scanf读取作用,%d代表读取整数,&T意思是把读取到的数字存入到T这个变量。】
while(T--)
【while循环,循环T次。(T--:先拿当前的T去判断是否大于0,判断完之后T=T-1)
Eg:第一次判断:T=3>0——进入循环,T变成2.只要一进入循环,T的值就减1】
{
long long n,t1,d1,t2,d2;
【回顾题目,n是题目的数量,t1,d1是小兰参数,t2,d2是小红参数。为什么不用int? 数字计算比较大,int存不下会溢出,导致结果错乱。】
scanf("%lld %lld %lld %lld %lld",&n,&t1,&d1,&t2,&d2);
【long对应的是%lld]
long long blue = n*t1+d1*n*(n-1)/2;
[计算小蓝做完所有题目,下方有解释。】
long long red =n*t2+d2*n*(n-1)/2;
if(blue<red)
【判断小蓝的总时间<小红的总时间,谁的时间少谁赢】
{
printf("BLUE\n");
【小蓝的时间少,小蓝赢,那么就输出小蓝,按照规定的大写字母】
}
else
if(red<blue)
{
printf("RED\n");
}
else
【第三种情况,自动输出不用存在if,输出DRAW】
{
printf("DRAW\n");
}
}
return 0;
}
0.0分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复