[CSP-J 2021]分糖果90pts

一个风和日丽的晚上

《风和日丽》

我上了一节编程课

《编程课》

学了一道题

《学了》

CSP-J 2021 分糖果

《。。。》

所以我要写一篇题解

《所以》

这道题看别的题解是道巧算

《看别的题解》

但是我这个蒟蒻根本发现不了还能这样算

《人间真实》

怎么办呢

《先枚举再想办法》

####正片开始

《片》

看起来题目介绍很多,实际上是道红题

前面不知道某人说的先枚举再想办法,所以要先照着这样做

某人:怎么正片开始还提我?

好了好了,开始枚举
因为是一道入门题,应该不用过多介绍
首先定义变量
因为要求最多能获得多少,所以还要一个max

int n,l,r,mx;

然后输入

	cin>>n>>l>>r;

为了时间复杂度哪哪都要省

虽然格式化快不了多少,但也至少快了

	scanf("%d%d%d",&n,&l,&r);

然后循环,遍历拿多少能获得最多
经过简单计算,获得的数量=k mod n
为了省时间,如果max是n-1,那么就直接退出
因为mod n的最大值就是n-1,已知是最大了不退出就有点浪费时间

最后输出,省时间,输出也格式化
好了,贴完整代码

#include<bits/stdc++.h>//头文件他不要忘
using namespace std;//命名空间要写上
int n,l,r,mx;//定义四个小变量
int main(){//主函数写复合语句
    scanf("%d%d%d",&n,&l,&r);//输入变量
    for(int i=r;i>=l;i--){//再枚举
        if(i%n>mx)mx=i%n;//找最大值
        if(mx==n-1)break;//退出吗?
    }
    printf("%d",mx);//输出之后
    return 0;//再见程序!
}//不要忘了括号哟!

可是会发现,测试点#9 T掉了,通过下载测试点可知,光看不计算,循环次数需要比4亿还多,肯定会TLE

只差0.06秒!
其实要是不把输入输出格式化,1.20s都可以
一个格式化 差距竟然这么大

所以这道题我们要感谢测试点很弱!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值