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 ...
随机推荐
- angular前端框架
总所周知,在前端开发中,大家用的比较多的框架就是angular,vue,react等,今天就为大家讲一下angular大家框架的原理及运用 1.本次所举的例子是以依赖require.js的, < ...
- css样式属性-字体和隐藏
1.字体 font-family:字体: <body> <div style="font-family:宋体">宋体</div> </bo ...
- 安卓备份 To Do(待办事项)的数据库
真正路径:/data/data/com.mediatek.todos/databases/todos.db 使用过链接的路径:/data/user/0/com.mediatek.todos/datab ...
- Learning to Rank算法介绍:RankNet,LambdaRank,LambdaMart
之前的博客:http://www.cnblogs.com/bentuwuying/p/6681943.html中简单介绍了Learning to Rank的基本原理,也讲到了Learning to R ...
- uva11865 朱刘算法+二分
这题说的需要最多花费cost元来搭建一个比赛网络,网络中有n台机器,编号为0 - n-1其中机器0 为服务器,给了n条线有向的和他们的花费以及带宽 计算,使得n台连接在一起,最大化网络中的最小带宽, ...
- SQL查询日历
这东西给自己留着用. 经常会用到一些查询需要做全月统计,但有些时候的统计需要将未发生日期也显示出来,因此会需要一个固定的日期表,(T6的自定义查询估计也是需要的,至少以前是这样) 下面写两种方法来获取 ...
- 聊聊WKWebView
聊一聊WKWebView 前言 由于之前一直在用UIWebView,所以对于WKWebView只是停留在知道,了解的状态,并未深入的去研究.前天一个项目要求支持iOS8以上,要加入一个web界面.在习 ...
- 2016NOI冬令营day3
上午第一课堂 第一次感觉能听... IOI题目选讲挺不错的,比较有趣(yong4) :) 然而接下来的“基础”数据结构就太神了,完全不会QAQ :( 下午我听得比较认真,VFK讲的是下一代评测系统 ...
- web前端----JavaScript(JS)简单介绍
JavaScript(JS) 一.JavaScript的历史 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中).后将其改名ScriptEa ...
- 远程登录 dos命令
1.桌面连接命令 mstsc /v: 192.168.1.250 /console 2.若需要远程启动所有Internet服务,可以使用iisreset命令来实现. 进入“命令提示符”窗口.在提示符后 ...