[NOI Online #2 提高组]涂色游戏 题解
题目描述
你有 1020 个格子,它们从 0 开始编号,初始时所有格子都还未染色,现在你按如下规则对它们染色:
- 编号是 p1 倍数的格子(包括 0号格子,下同)染成红色。
- 编号是 p2 倍数的格子染成蓝色。
- 编号既是 p1 倍数又是 p2 倍数的格子,你可以选择染成红色或者蓝色。
其中 p1 和 p2 是给定的整数,若格子编号是 p1 或 p2 的倍数则它必须要被染色。在忽略掉所有未染色格子后,你不希望存在 k个连续的格子颜色相同,因为你认为这种染色方案是无聊的。现在给定 p1, p2, k,你想知道是否有一种染色方案不是无聊的。
输入格式
本题包含多组数据。
第一行一个整数 T表示数据组数。
每组数据一行三个正整数p1, p2, k,变量意义见题目描述。
输出格式
对于每组数据,输出一行一个字符串,若存在一种染色方案不是无聊的,则输出 YES,否则输出 NO。
选手程序输出结果与样例或题面中的一种格式相符即可,即不区分大小写。例如,如果标准答案为 YES ,则输出结果 YES/Yes/yes 都视为正确。
输入输出样例
输入 #1
4
2 10 4
2 3 6
1 4 7
1 1 2
输出 #1
No
Yes
Yes
Yes
输入 #2
8
370359350 416913505 3
761592061 153246036 6
262185277 924417743 5
668232501 586472717 2
891054824 169842323 6
629603359 397927152 2
2614104 175031972 68
924509243 421614240 4
输出 #2
Yes
Yes
Yes
No
No
No
Yes
Yes
说明/提示
| 测试点编号 | p1, p2≤ | k≤ | T≤ |
|---|---|---|---|
| 1 ∼ 3 | 15 | 1515 | 3375 |
| 4 ∼ 6 | 10^3 | 10^3 | 10^4 |
| 7 ∼ 8 | 10^3 | 10^3 | 10 |
| 9 ∼ 10 | 10^5 | 10^3 | 10^3 |
| 11 ∼ 12 | 10^5 | 5*10^5 | 10 |
| 13 ∼ 14 | 10^5 | 5*10^5 | 10^5 |
| 15 | 10^9 | 10^9 | 10 |
| 16∼ 20 | 10^9 | 10^9 | 10^6 |
对于所有测试点1≤T≤106,1≤p1,p2,k≤109。
分析
我们设p1、p2互质,且p1<p2
那么最坏的情况就是在[k\(\times\)p2+1,(k+1)\(\times\)p2-1]之间枚举p1的倍数
区间长度=p2-2,我们只要将\(\frac{p2-2}{p1}\)+1的值与k比较就可以了
需要注意两个细节
1、k=1时要特判,直接输出No
2、p1、p2有可能不互质,要除以它们的最大公因数
代码
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<iostream>
using namespace std;
typedef long long ll;
ll gcd(ll aa,ll bb){
if(bb==0) return aa;
return gcd(bb,aa%bb);
}
int main(){
int t;
scanf("%d",&t);
while(t--){
ll aa,bb,k;
scanf("%lld%lld%lld",&aa,&bb,&k);
ll gys=gcd(aa,bb);
aa/=gys,bb/=gys;
if(aa>bb) swap(aa,bb);
if(k==1){
printf("No\n");
continue;
}
if(bb>2 && (bb-2)/aa+1>=k) printf("No\n");
else printf("Yes\n");
}
return 0;
}
[NOI Online #2 提高组]涂色游戏 题解的更多相关文章
- luogu P6570 [NOI Online #3 提高组]优秀子序列 二进制 dp
LINK:P6570 [NOI Online #3 提高组]优秀子序列 Online 2的T3 容易很多 不过出于某种原因(时间不太够 浪了 导致我连暴力的正解都没写. 容易想到 f[i][j]表示前 ...
- [NOI Online 2021 提高组] 积木小赛
思路不说了. 想起来自己打比赛的时候,没睡好.随便写了个\(HASH\),模数开小一半分都没有. 然后学了\(SAM\),发现这个判重不就是个水题. \(SAM\)是字串tire的集合体. 随便\(d ...
- [DP]Luogu 2014NOIP提高组 飞扬的小鸟题解
2014NOIP提高组飞扬的小鸟题解 题目描述 Flappy Bird是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一 ...
- NOIP提高组2004 合并果子题解
NOIP提高组2004 合并果子题解 描述:在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆. 每一次合并,多多可以把两堆果子合并到一起,消 ...
- hdu 4559 涂色游戏(SG)
在一个2*N的格子上,Alice和Bob又开始了新游戏之旅. 这些格子中的一些已经被涂过色,Alice和Bob轮流在这些格子里进行涂色操作,使用两种涂色工具,第一种可以涂色任意一个格子,第二种可以涂色 ...
- NOIp十连测 涂色游戏
[问题描述]小A 和小B 在做游戏.他们找到了一个n 行m 列呈网格状的画板.小A 拿出了p 支不同颜色的画笔,开始在上面涂色.看到小A 涂好的画板,小B 觉得颜色太单调了,于是把画板擦干净,希望涂上 ...
- [CSP-S模拟测试]:涂色游戏(DP+组合数+矩阵快速幂)
题目描述 小$A$和小$B$在做游戏.他们找到了一个$n$行$m$列呈网格状的画板.小$A$拿出了$p$支不同颜色的画笔,开始在上面涂色.看到小$A$涂好的画板,小$B$觉得颜色太单调了,于是把画板擦 ...
- 洛谷P1312 [NOIP2011提高组Day1T3]Mayan游戏
Mayan游戏 题目描述 Mayan puzzle是最近流行起来的一个游戏.游戏界面是一个 7 行5 列的棋盘,上面堆放着一些方块,方块不能悬空堆放,即方块必须放在最下面一行,或者放在其他方块之上.游 ...
- 洛谷P1080 [NOIP2012提高组D1T2]国王游戏 [2017年5月计划 清北学堂51精英班Day1]
P1080 国王游戏 题目描述 恰逢 H 国国庆,国王邀请 n 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右 手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这 n 位大臣排 ...
随机推荐
- js数据劫持 Object.defineProperty() 作用
原生js Object.defineProperty() 作用 假设我们有一个obj对象,我们要给他设置一个name属性会这么做 Object.defineProperty()也可以设置对象属性 这个 ...
- KVM NAT(网络地址转换模式)
NAT(网络地址转换模式) 使用NAT模式,就是让虚拟系统借助NAT(网络地址转换)功能,通过宿主机器所在的网络来访问公网.也就是说,使用NAT模式可以实现在虚拟系统里访问互联网.很显然,如果你只有一 ...
- js高阶函数filter、map、reduce
// 高阶函数 filter/map/reduce // filter中的回调函数有一个要求:必须返回一个boolean值, // 当返回true时,函数内部会自动将这次回调的 n 加入到新的数组中 ...
- 浅谈Unity的脚本执行顺序
一.添加脚本的顺序 这是一张官方的脚本顺序图 一般,当我们把脚本绑定在游戏对象上时,或者点击绑定好的脚本的reset按钮时,会调用Reset() 当我们初始化一个对象时,会先调用Awake()在调用O ...
- 5、vue的传值
1-父组件向子组件 -父组件向孙子组件传值(属性传值) //父组件<template> <div id='app'> <headera v-bind:hea=" ...
- phpstorm里面无法配置deployment?
我的preference里面找不到deployment是什么回事啊? 解决方案: 导致这个问题的原因是PHPStorm的plugins里面没有Remote Hosts Access这个插件,安装一下这 ...
- .net core 部署到windows服务上的方法
前言 Net core 项目部门在Windows有很多种方式,大致有以下几种, dotnet 命令, iis(windowshosts), 一些开源的应用容器(docker ) 基于一些exe 程序, ...
- OKR-Periods of Words【KMP最小前后缀】
OKR-Periods of Words 传送门:链接 来源:UPC 8180 题目描述 串是有限个小写字符的序列,特别的,一个空序列也可以是一个串.一个串P是串A的前缀,当且仅当存在串B,使得 ...
- ASP.NET WebAPI框架解析第一篇
ASP.NET WebAPI有两种寄宿模式,一种是WebHost,一种是SelfHost,为什么可以有两种模式的原因在于WebAPI有一个相对独立的消息处理管道,只要给这个消息管道传递一个封装好的对象 ...
- Java并发编程-深入Java同步器AQS原理与应用-线程锁必备知识点
并发编程中我们常会看到AQS这个词,很多朋友都不知道是什么东东,博主经过翻阅一些资料终于了解了,直接进入主题. 简单介绍 AQS是AbstractQueuedSynchronizer类的缩写,这个不用 ...