题目描述
小 Q 喜欢站在马路边发呆。
这天,小 Q 注意起了十字路口的红绿灯,他发现这个红绿灯总是先绿
a
a
a 秒,再变成红
b
b
b 秒,然后再变绿
a
a
a 秒,变红
b
b
b 秒,不断循环。小 Q 在红绿灯刚刚变绿的时候开始观察,持续了
c
c
c 秒。
请你求出,这
c
c
c 秒中,有多少时间红绿灯是绿的。
输入格式
一行三个整数
a
,
b
,
c
a,b,c
a,b,c,含义如上。
输出格式
一行一个整数
x
x
x,表示红绿灯一共绿了
x
x
x 秒。
样例
Input 1
2 1 10
Output 1
7
提示
对于 100% 的数据,
1
≤
a
,
b
,
c
≤
1
0
9
1≤a,b,c≤10^9
1≤a,b,c≤109
子任务一(30 分):
c
≤
a
c≤a
c≤a
子任务二(30 分):
a
,
b
,
c
≤
1
0
3
a,b,c≤10^3
a,b,c≤103
子任务三(40 分):无附加限制
代码思路:
这是一道比较简单的题目,一个绿灯和一个红灯为一个周期,一个周期的时间为
a
+
b
a+b
a+b。
所以红绿灯一共绿了
c
/
(
a
+
b
)
∗
a
+
m
i
n
(
c
%
(
a
+
b
)
,
a
)
c / (a + b) * a + min(c \% (a + b),a)
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;
}