CSP小明放学

本文介绍了如何解决一道关于红绿灯周期的编程问题,小明上学途中遇到不同颜色的红绿灯,需要计算总耗时。通过对红绿灯周期的理解,结合给定的输入数据,可以计算出小明上学的总时间。样例输入和输出展示了具体的计算过程。
摘要由CSDN通过智能技术生成

先贴上思路和代码吧,然后题目描述在最后:

【思路】:先在纸上把红绿灯的周期图画出来,就是一个一维的时间轴,从左到右依次是红、黄、绿,然后时间是往左走的,这样的话感觉写起来顺手一些。那么,给你一个type(红、黄、还是绿),你首先在周期中标出它的位置,然后根据已经用掉的时间推出到该红绿灯的位置,就比如,一开始在绿灯,停留在2秒,红绿黄的周期都是3,那么你的x坐标就是3+3+2=8,然后假如你之前用了7秒,直接8-7=1, 1是属于红灯区间,所以你需要等1秒。

那么如果不够当前x坐标不够减怎么办,直接取余就行了,因为它是循环的,costTime取余一下,然后再用x坐标去剪

另外,数据范围可能超过int,最好用long long

看了看网上别人的代码,发现都好长,我的就几段话

#include<iostream>

using namespace std;

typedef long long ll;


int main()
{
    ll red,yellow,green;
    ll n;
    cin>>red>>yellow>>green;
    cin>>n;
    ll type,time;
    ll timeCost = 0;
    ll period = red+yellow+green;
    for( int i = 1 ; i <= n ; i++ )
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值