J Press the Button
BaoBao and DreamGrid are playing a game using a strange button. This button is attached to an LED light (the light is initially off), a counter and a timer and functions as follows:
When the button is pressed, the timer is set to (v+0.5) seconds (no matter what the value of the timer is before the button is pressed), where v is a given integer, and starts counting down;
When the button is pressed with the LED light off, the LED light will be lit up;
When the button is pressed with the LED light on, the value of the counter will be increased by 1;
When the timer counts down to 0, the LED light goes out (that is to say, the light is off).
During the game, BaoBao and DreamGrid will press the button periodically. If the current real time (that is to say, the time elapsed after the game starts, NOT the value of the timer) in seconds is an integer and is a multiple of a given integer a, BaoBao will immediately press the button b times; If the current time in seconds is an integer and is a multiple of another given integer c, DreamGrid will immediately press the button d times.
Note that
0 is a multiple of every integer;
Both BaoBao and DreamGrid are good at pressing the button, so it takes no time for them to finish pressing;
If BaoBao and DreamGrid are scheduled to press the button at the same second, DreamGrid will begin pressing the button d times after BaoBao finishes pressing the button b times.
The game starts at 0 second and ends after t seconds (if the button will be pressed at t seconds, the game will end after the button is pressed). What's the value of the counter when the game ends?
Input
There are multiple test cases. The first line of the input contains an integer T (about 100), indicating the number of test cases. For each test case:
The first and only line contains six integers a, b, c, d, v and t (1≤a,b,c,d≤1e6 , 1≤v,t≤1e12 ). Their meanings are described above.
Output
For each test case output one line containing one integer, indicating the value of the counter when the game ends.
Sample Input
2
8 2 5 1 2 18
10 2 5 1 2 10
Sample Output
6
4
Hint
We now explain the first sample test case.
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次灯,如果灯关,则灯亮,如果灯亮count加一,每次按得时候,倒计时v+0.5启动,倒计时结束,灯灭,求进过t秒,count是多少
因为过了a,c的最小公倍数的时候,一切又重头,所以会有循环,因此先求一次0到最小公倍数,其他的,按比例算就好了,最后剩下的时间在算一遍
.。。中间不知道为什么,不用ll就是会爆
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include <iomanip>
#include<cmath>
#include<float.h>
#include<string.h>
#include<algorithm>
#include<vector>
#include<queue>
#define sf scanf
#define pf printf
#define scf(x) scanf("%d",&x)
#define scff(x,y) scanf("%d%d",&x,&y)
#define scfff(x,y,z) scanf("%d%d%d",&x,&y,&z)
#define prf(x) printf("%d\n",x)
#define mm(x,b) memset((x),(b),sizeof(x))
#define rep(i,a,n) for (int i=a;i<n;i++)
#define per(i,a,n) for (int i=a;i>=n;i--)
typedef long long ll;
const ll mod=1e9+7;
const double eps=1e-8;
const int inf=0x3f3f3f3f;
using namespace std;
const double pi=acos(-1.0);
const int N=1e7+10;
ll node1[N],node2[N];
ll gcd(ll a,ll b)
{
return b==0?a:gcd(b,a%b);
}
int main()
{
int re;scf(re);
while(re--)
{
ll a,b,c,d;
ll t,v,sum;
ll ans=0;
sf("%lld%lld%lld%lld%lld%lld",&a,&b,&c,&d,&v,&t);
sum=a*c/gcd(a,c);//求最小公倍数
ll num1=sum/a,num2=sum/c;//ac各需要按几次
rep(i,1,num1+1)//记录a要按得时间
node1[i]=i*a;
rep(i,1,num2+1)//记录c要按得时间
node2[i]=i*c;
double val;
ll pos1=1,pos2=1;
ans=b+d-1;val=v+0.5;
ll now=0;//当前的时间
ll jieshu=0;//结束标记
while(1)
{
//cout<<"1"<<" "<<"pos1:"<<node1[pos1]<<" pos2:"<<node2[pos2]<<endl;
if(node1[pos1]<node2[pos2])
{
if(pos1==num1&&pos2==num2)//以防a=c的时候死循环
break;
if(t<node1[pos1])//如果t在0到最小公倍数之间,可以提前结束,下同
{
jieshu=1;
pf("%lld\n",ans);
break;
}
if(node1[pos1]-now<=val)//下个时间到当前时间倒计时有没有结束
ans+=b;
else
ans+=b-1;
now=node1[pos1];
pos1++;
}else
{
if(pos1==num1&&pos2==num2)
break;
if(t<node2[pos2])
{
jieshu=1;
pf("%lld\n",ans);
break;
}
if(node2[pos2]-now<=val)
ans+=d;
else
ans+=d-1;
now=node2[pos2];
pos2++;
}
if(pos1==num1&&pos2==num2)
break;
}
if(jieshu) continue;
int temp=0;
if(node1[num1]-now<=val)//开始循环的时候,灯还亮吗
temp=1;
ll cishu=t/node1[num1];//循环次数
ans+=(cishu-1)*(ans+temp);
pos1=pos2=1;
t%=node1[num1];//剩下的时间
ans+=temp-1+b+d;
now=0;//重置时间
while(1)//继续走
{
if(node1[pos1]<node2[pos2])
{
if(t<node1[pos1])
break;
if(node1[pos1]-now<=val)
ans+=b;
else
ans+=b-1;
now=node1[pos1];
pos1++;
}else
{
if(t<node2[pos2])
break;
if(node2[pos2]-now<=val)
ans+=d;
else
ans+=d-1;
val=v+0.5;
now=node2[pos2];
pos2++;
}
if(pos1==num1&&pos2==num2)
break;
}
pf("%lld\n",ans);
}
return 0;
}
J Press the Button的更多相关文章
- 2018 icpc 青岛网络赛 J.Press the Button
Press the Button Time Limit: 1 Second Memory Limit: 131072 KB BaoBao and DreamGrid are playing ...
- The 2018 ACM-ICPC Asia Qingdao Regional Contest, Online J Press the Button
BaoBao and DreamGrid are playing a game using a strange button. This button is attached to an LED li ...
- The 2018 ACM-ICPC Asia Qingdao Regional Contest, Online J - Press the Button(思维)
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4056 题意 有一个按钮.一个灯.一个计时器和一个计数器,每按一次按钮,计时 ...
- ACM-ICPC 2018 青岛赛区网络预赛 J. Press the Button(数学)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4056 题意:有一个按钮,时间倒计器和计数器,在时间[0,t]内, ...
- [Android Tips] 2. Disable recent apps dialog on long press home button
public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); Log.d(&qu ...
- The 2018 ACM-ICPC Asia Qingdao Regional Contest, Online Solution
A Live Love 水. #include<bits/stdc++.h> using namespace std; typedef long long ll; ; const i ...
- The 2018 ACM-ICPC Asia Qingdao Regional Contest(青岛网络赛)
A Live Love 水 #include <algorithm> #include<cstdio> #include<cstring> using namesp ...
- Windows phone常用控件之Button
Button类:表示一个响应 ButtonBase.Click 事件的 Windows 按钮控件. 继承层次结构: 命名空间: System.Windows.Controls ClickMode ...
- Automate Screen or Button Taps via Tasker : Simulating keypress events
When using Tasker, sometimes we want to do some automation on screen e.g. screen or button taps. At ...
随机推荐
- [CentOS7]redis设置开机启动,设置密码
简介 上篇文章介绍了如何安装redis,但每次重启服务器之后redis不会自启,这里将介绍如何进行自启设置,以及如何设置redis的密码,进行密码验证登陆. 上篇文章: Centos7安装Redis ...
- tensorflow由于未初始化变量所导致的错误
版权声明:本文为博主原创文章,如需转载请注明出处,谢谢. https://blog.csdn.net/qq_38542085/article/details/78742295 初始代码 import ...
- flink 有状态udf 引起血案一
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/rlnLo2pNEfx9c/article/details/83422587 场景 近期在做一个画像的 ...
- JSP展示两位小数
<td class="thCenter"> <fmt:formatNumber type="number" value="${rec ...
- linux平台下Tomcat的安装与优化
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选.对于一个初学者来说,可以这样 ...
- Spark2.3(四十三):Spark Broadcast总结
为什么要使用广播(broadcast)变量? Spark中因为算子中的真正逻辑是发送到Executor中去运行的,所以当Executor中需要引用外部变量时,需要使用广播变量.进一步解释: 如果exe ...
- Android 实现登录界面和功能实例
近期一个android小程序须要登录功能,我简单实现了一下.如今记录下来也当做个笔记,同一时候也希望能够相互学习.所以,假设我的代码有问题,还各位请提出来.多谢了! 以下.就简述一下此实例的主要内容: ...
- [C#] 解决Silverlight反射安全关键(SecuritySafeCritical)时报“System.MethodAccessException: 安全透明方法 XXX 无法使用反射访问”的问题
作者: zyl910 一.缘由 在Silverlight中使用反射动态访问时,经常遇到"System.MethodAccessException: 安全透明方法 XXX 无法使用反射访问-- ...
- CoreGraphics之CGContextSaveGState与UIGraphicsPushContext
转至:https://www.jianshu.com/p/be38212c0f79 CoreGraphics与UIKit 这边从iOS绘图教程 提取一些重要的内容. Core Graphics Fra ...
- 10分钟上手图数据库Neo4j
随着互联网不断的发展,传统的关系型数据库如oracle,mysql已经难以支撑现下大数据量,高并发的场景了.于是,NoSQL横空出世,有像cassandra这样的column-based,像Mongo ...