Problem Description
Victor has a machine. When the machine starts up, it will pop out a ball immediately. After that, the machine will pop out a ball every w seconds. However, the machine has some flaws, every time after x seconds of process the machine has to turn off for y seconds for maintenance work. At the second the machine will be shut down, it may pop out a ball. And while it's off, the machine will pop out no ball before the machine restart.
Now, at the 0 second, the machine opens for the first time. Victor wants to know when the n-th ball will be popped out. Could you tell him?
Now, at the 0 second, the machine opens for the first time. Victor wants to know when the n-th ball will be popped out. Could you tell him?
Input
The input contains several test cases, at most 100 cases.
Each line has four integers x, y, w and n. Their meanings are shown above。
1≤x,y,w,n≤100.
Each line has four integers x, y, w and n. Their meanings are shown above。
1≤x,y,w,n≤100.
Output
For each test case, you should output a line contains a number indicates the time when the n-th ball will be popped out.
Sample Input
2 3 3 3
98 76 54 32
10 9 8 100
Sample Output
10
2664
939
题意:一台机器每W分钟吐出一个球,但是它每隔x分要停y分钟。它每次开始时要吐出一个球。求吐出第n个球的时间。
我们先算每x分钟能吐出多少个球,用n除每分钟吐出的球,就能知道机器要停机次,然后就简单了。
1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 int main() 5 { 6 int n,w,x,y,ans,t; 7 while (~scanf("%d%d%d%d",&x,&y,&w,&n)) 8 { 9 t=x/w+1; 10 if (n%t==0) 11 { 12 ans=(n/t-1)*(x+y); 13 ans+=(t-1)*w; 14 } 15 else 16 { 17 ans=(n/t)*(x+y); 18 ans+=(n%t-1)*w; 19 } 20 printf("%d ",ans); 21 } 22 }