Codeforces 834C - The Meaningless Game
数学。
思路1:判断a•b能不能化成v3且a%v==0且b%v==0。v可以直接用pow求(或者用cbrt),也可以二分求;还可以用map映射预处理,使得所有的map[v*v*v]=v。
代码1(cbrt版,296 ms):
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ld long double
#define ls rt<<1,l,m
#define rs rt<<1|1,m+1,r
#define pb push_back
const int INF=0x3f3f3f3f;
const int N=1e6+;
ll gcd(ll a,ll b){
return b?gcd(b,a%b):a;
}
map<ll,ll>mp;
int main()
{
int n;
scanf("%d",&n);
while(n--)
{
ll a,b;
scanf("%lld %lld",&a,&b);
ll m=a*b;
ll v=cbrt((ld)m);
ll x=a/v,y=b/v;//a*b==x*y*v*v==v*v*v得出v=x*y
if(x*x*y==a&&x*y*y==b)puts("Yes");
else puts("No");
}
return ;
}
代码2(pow版,311 ms):
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ls rt<<1,l,m
#define rs rt<<1|1,m+1,r
#define pb push_back
const int INF=0x3f3f3f3f;
const int N=1e5+;
ll gcd(ll a,ll b){
return b?gcd(b,a%b):a;
}
int main()
{
int n;
scanf("%d",&n);
while(n--)
{
ll a,b;
scanf("%lld %lld",&a,&b);
ll m=a*b;
ll v=pow(m,./);
while(v*v*v<m)v++;
if(v*v*v!=m||a%v!=||b%v!=)puts("No");
else puts("Yes");
}
return ;
}
代码3(二分版,327 ms):
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ls rt<<1,l,m
#define rs rt<<1|1,m+1,r
#define pb push_back
const int INF=0x3f3f3f3f;
const int N=1e6+;
ll gcd(ll a,ll b){
return b?gcd(b,a%b):a;
}
int main()
{
int n;
scanf("%d",&n);
while(n--)
{
ll a,b;
scanf("%lld %lld",&a,&b);
ll m=a*b;
int l=,r=N;
ll mid;
while(l<r)
{
mid=(l+r)>>;
if(mid*mid*mid<a*b)l=mid+;
else r=mid;
}
ll v=mid;
while(v*v*v<m)v++;
if(v*v*v!=m||a%v!=||b%v!=)puts("No");
else puts("Yes");
}
return ;
}
代码4(map版,717 ms):
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ls rt<<1,l,m
#define rs rt<<1|1,m+1,r
#define pb push_back
const int INF=0x3f3f3f3f;
const int N=1e6+;
ll gcd(ll a,ll b){
return b?gcd(b,a%b):a;
}
map<ll,ll>mp;
int main()
{
int n;
for(ll i=;i<N;i++)mp[i*i*i]=i;
scanf("%d",&n);
while(n--)
{
ll a,b;
scanf("%lld %lld",&a,&b);
ll m=a*b;
if(!mp[m])puts("No");
else
{
if(a%mp[m]||b%mp[m])puts("No");
else puts("Yes");
}
}
return ;
}
思路2:gcd(a,b)=∏kiaki(1≤aki≤2),a•b=∏ki3。先看a•b能不能化成v3,如果不能输出No;否则,因为c=gcd(gcd(a,b),a•b)肯定包含了∏ki,所以a•b除以3次c后不能变成1,那么输出No,否则,输出Yes。
代码5(389 ms):
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ls rt<<1,l,m
#define rs rt<<1|1,m+1,r
#define pb push_back
const int INF=0x3f3f3f3f;
const int N=1e5+;
ll gcd(ll a,ll b){
return b?gcd(b,a%b):a;
}
int main()
{
int n;
scanf("%d",&n);
while(n--)
{
ll a,b;
scanf("%lld %lld",&a,&b);
ll m=a*b;
ll v=pow(m,./);
while(v*v*v<m)v++;
if(v*v*v!=m)
{
printf("No\n");
}
else
{
ll g=gcd(a,b);
for(int i=;i<;i++)
{
ll c=gcd(g,m);
m/=c;
}
if(m!=)printf("No\n");
else printf("Yes\n");
}
}
return ;
}
Codeforces 834C - The Meaningless Game的更多相关文章
- CodeForces 834C - The Meaningless Game | Codeforces Round #426 (Div. 2)
/* CodeForces 834C - The Meaningless Game [ 分析,数学 ] | Codeforces Round #426 (Div. 2) 题意: 一对数字 a,b 能不 ...
- Codeforces 833A The Meaningless Game - 数论 - 牛顿迭代法 - 二分法
Slastyona and her loyal dog Pushok are playing a meaningless game that is indeed very interesting. T ...
- Codeforces Round #426 (Div. 2) C. The Meaningless Game
C. The Meaningless Game 题意: 两个人刚刚开始游戏的时候的分数, 都是一分, 然后随机一个人的分数扩大k倍,另一个扩大k的平方倍, 问给你一组最后得分,问能不能通过游戏得到这样 ...
- Codeforces Round #426 The Meaningless Game
题目网址:http://codeforces.com/contest/834/problem/C 题目: C. The Meaningless Game Slastyona and her loyal ...
- C. Meaningless Operations Codeforces Global Round 1 异或与运算,思维题
C. Meaningless Operations time limit per test 1 second memory limit per test 256 megabytes input sta ...
- 【Codeforces Round #426 (Div. 2) C】The Meaningless Game
[Link]:http://codeforces.com/contest/834/problem/C [Description] 有一个两人游戏游戏; 游戏包括多轮,每一轮都有一个数字k,赢的人把自己 ...
- Codeforces Round #426 (Div. 1) A.The Meaningless Game (二分+数学)
题目链接: http://codeforces.com/problemset/problem/833/A 题意: 给你 \(a\) 和 \(b\),两个人初始化为 \(1\).两个人其中一方乘以 \( ...
- 【筛法求素数】Codeforces Round #426 (Div. 1) A. The Meaningless Game
先筛出来1000以内的素数. 枚举x^(1/3) 和 y^(1/3)以内的素因子,这样除完以后对于x和y剩下的因子,小的那个的平方必须等于大的. 然后判断每个素因数的次数之和是否为3的倍数,并且小的那 ...
- 【Codeforces Global Round 1 C】Meaningless Operations
[链接] 我是链接,点我呀:) [题意] 给你一个a 让你从1..a-1的范围中选择一个b 使得gcd(a^b,a&b)的值最大 [题解] 显然如果a的二进制中有0的话. 那么我们就让选择的b ...
随机推荐
- js五星好评
一般我们在一些购物以及美食的网站都会看到五星好评之类的,一下是使用js制作的五星好评! <!DOCTYPE html> <html lang="en"> & ...
- OAuth 白话简明教程 2.授权码模式(Authorization Code)
转自:http://www.cftea.com/c/2016/11/6703.asp OAuth 白话简明教程 1.简述 OAuth 白话简明教程 2.授权码模式(Authorization Code ...
- windows脚本的if语句
- yii2--windows下composer安装
//文件及存放目录 D:\php\php.exe D:\php\composer.phar //设置path(追加) ; D:\php //创建composer.bat文件 D:\php>ech ...
- JSON实例(单对象)
实例一: using System; using System.Web.Script.Serialization; namespace JSonDemo { //实体类 public class Pe ...
- LINUX环境变量(一)
Linux 的变量可分为两类:环境变量和本地变量 环境变量,或者称为全局变量,存在与所有的shell 中,在你登陆系统的时候就已经有了相应的系统定义的环境变量了.Linux 的环境变量具有继承性,即子 ...
- Qt 学习之路 2(55):数据库操作
Qt 提供了 QtSql 模块来提供平台独立的基于 SQL 的数据库操作.这里我们所说的“平台独立”,既包括操作系统平台,又包括各个数据库平台.另外,我们强调了“基于 SQL”,因为 NoSQL 数据 ...
- ES6学习--箭头函数
1. 箭头函数基本形式 let func = (num) => num; let func = () => num; let sum = (num1,num2) => num1 + ...
- P4336 [SHOI2016]黑暗前的幻想乡
P4336 [SHOI2016]黑暗前的幻想乡 矩阵树定理(高斯消元+乘法逆元)+容斥 ans=总方案数 -(公司1未参加方案数 ∪ 公司2未参加方案数 ∪ 公司3未参加方案数 ∪ ...... ∪ ...
- Python3 识别验证码(opencv-python)
Python3 识别验证码(opencv-python) 一.准备工作 使用opencv做图像处理,所以需要安装下面两个库: pip3 install opencv-python pip3 insta ...