Victor and Machine
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)Total Submission(s): 253 Accepted Submission(s): 144
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
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
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//第一次参加bestcoder 呵呵 太渣了我//递推#pragma comment(linker, "/STACK:1024000000,1024000000") #include<stdio.h> #include<string.h> #include<stdlib.h> #include<queue> #include<math.h> #include<vector> #include<map> #include<set> #include<stdlib.h> #include<cmath> #include<string> #include<algorithm> #include<iostream> #define exp 1e-10 using namespace std; const int N = 16; const int inf = 2147483647; const int mod = 2009; int main() { int x,y,w,n,s,t; while(~scanf("%d%d%d%d",&x,&y,&w,&n)) { s=x/w+1; if(s==1) printf("%d\n",(n-1)*(x+y)); else if(n%s==0) { t=n/s-1; printf("%d\n",t*(x+y)+(s-1)*w); } else { t=n/s; printf("%d\n",t*(x+y)+(n-t*s-1)*w); } } return 0; }