在思想的天空里自由翱翔。

红绿灯题解

Posted on 2023-05-14 12:58  rayhjfjwl  阅读(72)  评论(0)    收藏  举报  来源

题目描述
小 Q 喜欢站在马路边发呆。
这天,小 Q 注意起了十字路口的红绿灯,他发现这个红绿灯总是先绿 a 秒,再变成红 b 秒,然后再变绿 a 秒,变红 b 秒,不断循环。小 Q 在红绿灯刚刚变绿的时候开始观察,持续了 c 秒。
请你求出,这 c 秒中,有多少时间红绿灯是绿的。
输入格式
一行三个整数 a , b , c,含义如上。
输出格式
一行一个整数 x ,表示红绿灯一共绿了 x 秒。
样例
Input 1
2 1 10
Output 1
7
提示
对于 100% 的数据, 1≤a,b,c≤1000000000
子任务一(30 分): c ≤ a
子任务二(30 分): a , b , c ≤ 1000000
子任务三(40 分):无附加限制

代码思路:
这是一道比较简单的题目,一个绿灯和一个红灯为一个周期,一个周期的时间为 a + b
所以红绿灯一共绿了 c / ( a + b ) ∗ a + min ( c % ( a + b ) ,a )秒。
AC code:

#include <iostream>
using namespace std;

int main()
{
	long long a,b,c;
	cin >> a >> b >> c;
	long long t = c / (a + b);
	cout << (t * a) + min(c % (a + b),a) << endl;
	return 0;
 }