当前位置: 首页 > news >正文

(AC)架子鼓

题目描述

小K正在学习架子鼓。因为他刚刚开始,所以还只会军鼓和底鼓。他面前有两段乐谱,分别表示军鼓和底鼓的节奏,他需要同时演奏这两段节奏。每段乐谱有若干个音符,每个音符有一个时长,用一个分数
p/q来表示,其中p,q是互质的正整数,并且q∈{1,2,3,4,6,8,16}。对于每个音符,小K需要在这个音符对应的时长开始的时刻,击打对应的乐器。特殊地,在时刻0,小K一定同时击打军鼓和底鼓的第一个音符。请问小K有多少次同时击打军鼓和底鼓。

输入

多组测试数据。第一行表示测试组数T,满足 1≤T≤100。

之后每组数据,第一行是两个整数n1,n2 ,分别表示军鼓和底鼓的乐谱的音符数量。

之后n1 行,每行两个整数pi,qi , 代表军鼓的第i个音符的时长为pi/qi。

之后n2 行,每行两个整数pj,qj ,代表底鼓的第j个音符的时长为pj/qj。

保证1≤n1,n2≤104,并且对于所有的i和j,满足qi,qj∈{1,2,3,4,6,8,16},1≤pi,pj≤102,以及pi,qi 互质、pj,qj 互质。

输出

对于每组测试数据,输出一个整数,表示小K同时击打军鼓和底鼓的次数。

样例输入 Copy
1
2 4
1 2
1 2
1 4
1 4
1 4
1 4
样例输出 Copy
2
提示

军鼓击打的时刻有{0,1/2},底鼓击打的时刻有{0, 1/4,1/2,3/4},其中重合的击打时刻有2次。

代码 

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll,ll> P;
int t,n1,n2;
ll gcd(ll a,ll b){while(b!=0){ll temp=b;b=a%b;a=temp;}return a;
}
P jam(P a,P b){ll p=a.first*b.second+b.first*a.second;ll q=a.second*b.second;ll g=gcd(p,q);return {p/g,q/g};
}
int main(){scanf("%d",&t);while(t--){scanf("%d%d",&n1,&n2);P a,b,x{0,1},y{0,1};set<P>book;int ans=0;while(n1--){book.insert(x);scanf("%lld%lld",&a.first,&a.second);x=jam(x,a);}while(n2--){if(book.find(y)!=book.end())ans++;scanf("%lld%lld",&b.first,&b.second);y=jam(y,b);}printf("%d\n",ans);}return 0;
}

http://www.dtcms.com/a/301411.html

相关文章:

  • 基于Java的KTV点歌系统的设计与实现
  • 【CF】Day112——杂题 (逆向思维 | 二分 + 贪心 | 单调队列优化DP | 二进制 + 前缀和 | 二分图判断 | 暴力枚举)
  • JavaEE--3.多线程
  • python-装饰器
  • 【ST表、倍增】P7167 [eJOI 2020] Fountain (Day1)
  • QT6 源,七章对话框与多窗体(15)多文档 MDI 窗体 QMdiArea 篇一:属性,公共成员函数,信号与槽函数
  • 多智能体架构
  • 《计算机组成原理与汇编语言程序设计》实验报告四 Debug及指令测试
  • setnonblocking函数用途和使用案例
  • 在本地环境中运行 ‘dom-distiller‘ GitHub 库的完整指南
  • OSPF路由协议 多区域
  • 【ESP32】无法找到: “${env:IDF_PATH}/components/“的路径报错问题以及CMAKE构建不成功问题
  • Cursor报错解决【持续更新中】
  • 金融科技中的远程开户、海外个人客户在线开户、企业客户远程开户
  • 深入解析Java运行机制与JVM内存模型
  • 【Web APIs】JavaScript 节点操作 ⑩ ( 节点操作综合案例 - 动态生成表格案例 )
  • windows 11 JDK11安装
  • LeetCode 239:滑动窗口最大值
  • 五自由度磁悬浮轴承转子不平衡振动抑制破局:不平衡前馈补偿+自抗扰控制实战解析
  • MySQL 全详解:从入门到精通的实战指南
  • 第二阶段-第二章—8天Python从入门到精通【itheima】-138节(MySQL的综合案例)
  • 设备分配与回收
  • 数据处理实战(含代码)
  • OpenFeign-远程调用((Feign的使用方法))
  • Spring Boot 配置文件常用配置属性详解(application.properties / application.yml)
  • 【PCIe 总线及设备入门学习专栏 5.3.4 -- PCIe PHY Firmware 固件加载流程】
  • 如何思考一个动态规划问题需要几个状态?
  • [每周一更]-(第150期):AI Agents:从概念到实践的智能体时代
  • net8.0一键创建支持(Elastic)
  • 2025C卷 - 华为OD机试七日集训第1期 - 按算法分类,由易到难,循序渐进,玩转OD