题意:

给一个数对 \((a,b)\) ,每次可以进行操作 \((a,b) \to (|a-b|,b)\) 或 \((a,b) \to (a,∣a−b∣)\),问最后能否令 \(a=x\) 或 \(b=x\)

分析:

题目中出现了状态之间的转换,我们不妨装模做样地来一个状态分析(尽管这是个数论题)。

首先,令 \(a\) 远远大于 \(b\),可以得到:

            \((a,b)\to(a-b,b)\) 或 \((a,b)\to(a,a-b)\)

\[(a,a-b) \to (b,a-b) 或(a,b)
\]

观察这个柿子的转移结果,不难发现,他跟之前所得到的是等价的。

\[(a-b,b)\to(a-b-b,b)或(a-b,a-b-b)
\]

同理,在这个式子里面,只有转移结果左边的那个柿子才能继续向外转移。

综上,可以发现,在本题中,数对总是会这样转移:\((a,b)\to (a-b-b-...,b)\)。自然,当前一项小于后一项时,交换并继续处理,这就很像欧几里得算法了!

AC代码:

#include<bits/stdc++.h>
#define int long long
using namespace std;
int a,b,c;
void Swap(int &a,int &b){
int c = a;
a = b;
b = c;
}
bool check(int a,int b,int c){
if(a < b){
swap(a,b);//交换
}
if(a == c || b == c)return 1;//假如两个数中有任意一个数等于给出的数,那么目标已经达到,返回true
if(!a || !b)return 0;
if(c > a)return 0;//如果当前处理到的最大值已经小于目标值,那么就不可能达到,返回false
if(a % b == c % b)return 1;
return check(a % b,b,c);
}
int t;
signed main(){
cin >> t;
while(t--){
cin >> a >> b >> c;
bool flag = check(a,b,c);
if(flag)cout << "YES\n";
else cout << "NO\n";
} }

CF1612D X-Magic Pair的更多相关文章

  1. 2016中国大学生程序设计竞赛 - 网络选拔赛 C. Magic boy Bi Luo with his excited tree

    Magic boy Bi Luo with his excited tree Problem Description Bi Luo is a magic boy, he also has a migi ...

  2. hdu 4605 Magic Ball Game

    http://acm.hdu.edu.cn/showproblem.php?pid=4605 可以离线求解 把所以可能出现的 magic ball  放在一个数组里(去重),从小到大排列 先不考虑特殊 ...

  3. 树形DP CCPC网络赛 HDU5834 Magic boy Bi Luo with his excited tree

    // 树形DP CCPC网络赛 HDU5834 Magic boy Bi Luo with his excited tree // 题意:n个点的树,每个节点有权值为正,只能用一次,每条边有负权,可以 ...

  4. codeforces 632F. Magic Matrix

    题目链接 给一个n*n的矩阵, 问是否对角线上的元素全都为0, a[i][j]是否等于a[j][i], a[i][j]是否小于等于max(a[i][k], a[j][k]), k为任意值. 前两个都好 ...

  5. USACO 3.2 Magic Squares

    Magic SquaresIOI'96 Following the success of the magic cube, Mr. Rubik invented its planar version, ...

  6. hdu4149 Magic Potion

    Magic Potion Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Tota ...

  7. Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship

    Problem   Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship Time Limit: 2000 mSec P ...

  8. Educational Codeforces Round 60 (Rated for Div. 2) - D. Magic Gems(动态规划+矩阵快速幂)

    Problem   Educational Codeforces Round 60 (Rated for Div. 2) - D. Magic Gems Time Limit: 3000 mSec P ...

  9. Magic Stones CodeForces - 1110E (思维+差分)

    E. Magic Stones time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...

随机推荐

  1. css修改文子背景浮动

    伪元素选择器 """通过css操作文本内容""" 1.修改首个字体样式 p:first-letter{ color: blue; font- ...

  2. Sharding JDBC案例实战

    基础分库 以下实例基于shardingsphere 4.1.0 + SpringBoot 2.2.5.RELEASE版本 依赖导入: <properties> <project.bu ...

  3. mysql外键,锁

    mysql外键: 场景:用于建立两个表之间的联系,让A表中一个字段,可以在另一个表中字段值的范围去查找 注意事项: (1)被参照表和参照表字段属性必须一致 (2)参照表必须设置主键 (3)必须选择支持 ...

  4. HBase数据库基础操作

    实验要求: 根据上面给出的学生表Student的信息,执行如下操作: 用Hbase Shell命令创建学生表Student: create 'student','name', 'score' put ...

  5. Flask表单验证

    学习内容:①判断请求方式(request.method) from flask import Flask,render_template,request app = Flask(__name__) @ ...

  6. VueX数据持久化

    解决:Vue刷新时获取不到数据 解决方案:1.本地存储 2.Vuex数据持久化工具插件 本地存储 import Vue from "vue"; import Vuex from & ...

  7. 魔改了一下bootstrap-treeview组件,发布个NPM包体验一下

    前言 之前在这篇文章 基于.NetCore开发博客项目 StarBlog - (8) 分类层级结构展示 中说到,我为了让文章分类列表支持层级结构,用了一个树形组件,不过这个组件太老了,使用的Boots ...

  8. vue大型电商项目尚品汇(前台篇)day05终结篇

    前台部分到此结束,一路走来还挺怀念,今天主要是对整个项目的完成做一个最后的收尾工作,对于功能上的需求没有什么了,主要就是项目上线的一些注意事项. 一.个人中心二级路由 当我们点击查看订单应该跳转到个人 ...

  9. .NET C#基础(1):相等性与同一性判定 - 似乎有点小缺陷的设计

    0. 文章目的   本文面向有一定.NET C#基础知识的学习者,介绍在C#中的常用的对象比较手段,并提供一些编码上的建议. 1. 阅读基础 1:理解C#基本语法与基本概念(如类.方法.字段与变量声明 ...

  10. ExtJS 布局-Card 布局(Card layout)

    更新记录: 2022年6月1日 开始. 2022年6月6日 发布. 1.说明 卡片布局类似牌堆,每次只有一个子组件可见,子组件几乎填满了整个容器.卡片布局常用于向导(Wizard)和选项卡(Tabs) ...