标签:pac val set button 最小 inf led 倒计时 initial
At 0 second, the LED light is initially off. After BaoBao presses the button 2 times, the LED light turns on and the value of the counter changes to 1. The value of the timer is also set to 2.5 seconds. After DreamGrid presses the button 1 time, the value of the counter changes to 2.
At 2.5 seconds, the timer counts down to 0 and the LED light is off.
At 5 seconds, after DreamGrid presses the button 1 time, the LED light is on, and the value of the timer is set to 2.5 seconds.
At 7.5 seconds, the timer counts down to 0 and the LED light is off.
At 8 seconds, after BaoBao presses the button 2 times, the LED light is on, the value of the counter changes to 3, and the value of the timer is set to 2.5 seconds.
At 10 seconds, after DreamGrid presses the button 1 time, the value of the counter changes to 4, and the value of the timer is changed from 0.5 seconds to 2.5 seconds.
At 12.5 seconds, the timer counts down to 0 and the LED light is off.
At 15 seconds, after DreamGrid presses the button 1 time, the LED light is on, and the value of the timer is set to 2.5 seconds.
At 16 seconds, after BaoBao presses the button 2 times, the value of the counter changes to 6, and the value of the timer is changed from 1.5 seconds to 2.5 seconds.
At 18 seconds, the game ends.
只要遇到a,c的倍数就会按b,d次按钮,若同是a,c的倍数,先a,后c
若按之前为暗,按一次变亮,若按之前为亮,按一次为计数器+1
每次按一下,都会让计时器重新设置为v+0.5(开始倒计时,时间到0,就会变暗)
问[0,t]的时间内,计数器最后为多少。(0为任意数的倍数)
1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 #include <cstring> 5 #include <string> 6 #include <cmath> 7 using namespace std; 8 #define ll long long 9 int T; 10 ll a,b,c,d,v,t; 11 ll gcd(ll a,ll b) 12 { 13 return b==0?a:gcd(b,a%b); 14 } 15 ll lcm(ll a,ll b) 16 { 17 return a*b/gcd(a,b); 18 } 19 ll x,y,z,cnt,ans,last; 20 /* 21 明显一个最小公倍数为一个周期 22 0 :单独算 23 再计算除一个周期的结果*周期数 24 再加上不满一个周期的结果 25 */ 26 int main() 27 { 28 scanf("%d",&T); 29 while(T--){ 30 scanf("%lld%lld%lld%lld%lld%lld",&a,&b,&c,&d,&v,&t); 31 ans=b+d-1; 32 x=0,y=0,last=0,cnt=0;//ans 不用再赋初值了 33 /* 34 35 */ 36 z=lcm(a,c);//(a,c) 不是(x,y) 37 while(x<z||y<z){ 38 if(x+a<=y+c){ 39 x+=a; 40 if(x<=last+v) cnt++; 41 cnt+=b-1; 42 last=x; 43 } 44 else{ 45 y+=c; 46 if(y<=last+v) cnt++; 47 cnt+=d-1; 48 last=y; 49 } 50 51 } 52 ans+=cnt*(t/z);//cnt为一个周期的结果 53 t%=z; 54 x=0,y=0,last=0; 55 while(x+a<=t||y+c<=t){//保证在t的范围内 56 if(x+a<=y+c){ 57 x+=a; 58 if(x<=last+v) ans++; 59 ans+=b-1; 60 last=x; 61 } 62 else{ 63 y+=c; 64 if(y<=last+v) ans++; 65 ans+=d-1; 66 last=y; 67 } 68 } 69 printf("%lld\n",ans); 70 } 71 return 0; 72 }
标签:pac val set button 最小 inf led 倒计时 initial
原文地址:https://www.cnblogs.com/tingtin/p/9667078.html