本题题意 两个人一个每隔a按b次 另一个每隔c按d次 无论按下多少次动作都是瞬间完成的
按下之后等亮v+0.5秒 总时间为t 时间结束时求counter的数值
这题的循环节是lcm 都是两个时间的倍数嘛
在完整周期的总共按按钮次数是 (t/a)*b+(t/c)*d
加上0秒的d+b-1
未满周期的再算算
#include<iostream>
#include<vector>
#include<algorithm>
#include<cstdio>
using namespace std;
vector<long long> vec;
long long gcd(long long a,long long b)
{
return b==0?a:gcd(b,a%b);
}
int main()
{
long long all;
cin>>all;
while(all--)
{
long long a,b,c,d,v,t;
cin>>a>>b>>c>>d>>v>>t;
vec.clear();
long long lcm=a*c/gcd(a,c);//一个周期是一个lcm 大家都可以达到那个倍数嘛
//将每次按按钮的时间push进去
for(long long i=0;i<=lcm;i+=a)
vec.push_back(i);
for(long long i=0;i<=lcm;i+=c)
vec.push_back(i);
sort(vec.begin(),vec.end());
vec.erase(unique(vec.begin(),vec.end()),vec.end());//将相同的时间段去除