CF833 A The Meaningless Game
题干

Slastyona and her loyal dog Pushok are playing a meaningless game that is indeed very interesting.
The game consists of multiple rounds. Its rules are very simple: in each round, a natural number kk is chosen. Then, the one who says (or barks) it faster than the other wins the round. After that, the winner's score is multiplied by k^2 , and the loser's score is multiplied by k. In the beginning of the game, both Slastyona and Pushok have scores equal to one.
Unfortunately, Slastyona had lost her notepad where the history of all nn games was recorded. She managed to recall the final results for each games, though, but all of her memories of them are vague. Help Slastyona verify their correctness, or, to put it another way, for each given pair of scores determine whether it was possible for a game to finish with such result or not.
输入格式
In the first string, the number of games nn (1<=n<=350000)(1<=n<=350000) is given.
Each game is represented by a pair of scores aa , bb (1<=a,b<=10^{9})(1<=a,b<=109) – the results of Slastyona and Pushok, correspondingly.
输出格式
For each pair of scores, answer "Yes" if it's possible for a game to finish with given score, and "No" otherwise.
You can output each letter in arbitrary case (upper or lower).
翻译
Slastyona和她的忠实狗狗普什克正在玩一个毫无意义但是很有趣的游戏。游戏包括多个回合。
它的规则非常简单:先选择一个自然数k。然后,谁说(或吠)的比另一个快就会赢得一局。胜利者的得分在那之后会乘以k的平方,而输了的人的得分就只能乘以k。比赛开始时,Slastyona和PurSok都有一个初始分数。不幸的是,Slastyona丢失了记事本,那里记录了他们玩过的N个游戏的历史。她设法回忆了每一场比赛的最终结果,但是记忆都很模糊。帮助Slastyona验证它们的正确性,或者,换句话说,对于每一对给定的分数,确定游戏是否能够完成这样的结果。
样例
输入:
6
2 4
75 45
8 8
16 16
247 994
1000000000 1000000
输出:
Yes
Yes
Yes
No
No
Yes
Tips
First game might have been consisted of one round, in which the number 22 would have been chosen and Pushok would have won.
The second game needs exactly two rounds to finish with such result: in the first one, Slastyona would have said the number 55 , and in the second one, Pushok would have barked the number 33 .
瞎掰掰 ≧ ﹏ ≦
首先,这是一道很简单的思维题(然而最近脑子煞笔了的我依然卡了半天...),所以不要被不知所云的题干给吓唬到。
我们把花里胡哨的题干给去掉,真正的问题其实就是让我们判断每一组数据的合法性吧。这题的要点(其实也算不上难想,可我这个傻缺就是没看出来QwQ)就是我们不能分别考虑两个数,我们要把两个数之间的合法关系规律给找出来,也就是我们把两个数合起来...
初始分数是未知的,也就是任意的。改变一共有两种,乘k或者乘k^2, 问题是我们对于每轮谁乘k,谁乘k^2 ,并不清楚。而这时我们应该能反应过来,虽然这两个数各自的变化我们不知道,但他们的乘积的变化是一定的,也就是乘上了k^3,那么问题就解决了:只要两个最终分数的乘积是一个完全立方数,那么这组数据就是合法的(前提是这个完全立方数的立方根是这两个数的因数,例如1和8,虽然相乘是2的完全立方,但2并不是1的因数,所以并不合法)。
剩下的就是敲代码了...我采用了纯离线操作...因为a,b的最大值都是10^9, 所以乘积的最大值是10^18,开数组显然开不下,所以用了map...
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<map>
using namespace std;
const int maxn=350000+10;
#define ll long long
unsigned long long a[maxn],b[maxn],tmp;
int main(){
int n;
cin>>n;
map<unsigned long long,int> num;
for(ll i=1;i<=1000000;i++){//10^18是10^6的立方
tmp=i*i*i;
num[tmp]=i;
}
for(int i=1;i<=n;i++)
scanf("%llu %llu",&a[i],&b[i]);
for(int i=1;i<=n;i++){
//cout<<a[i]<<" "<<b[i]<<endl;
if(a[i]==1&&b[i]==1){
printf("Yes\n");
continue;
}
unsigned long long tmpp=a[i]*b[i];
if(num[tmpp]>0){
unsigned long long t=num[tmpp];
if(a[i]%t==0&&b[i]%t==0){
printf("Yes\n");
continue;
}
else printf("No\n");
}
else printf("No\n");
}
return 0;
}
CF833 A The Meaningless Game的更多相关文章
- Cassandra - Non-system keyspaces don't have the same replication settings, effective ownership information is meaningless
In cassandra 2.1.4, if you run "nodetool status" without any keyspace specified, you will ...
- 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 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 834C - The Meaningless Game
834C - The Meaningless Game 数学. 思路1:判断a•b能不能化成v3且a%v==0且b%v==0.v可以直接用pow求(或者用cbrt),也可以二分求:还可以用map映射预 ...
- A. The Meaningless Game(数学)
A. The Meaningless Game time limit per test:1 second memory limit per test:256 megabytes input:stand ...
- Codeforces Round #426 The Meaningless Game
题目网址:http://codeforces.com/contest/834/problem/C 题目: C. The Meaningless Game Slastyona and her loyal ...
- CodeForces 834C - The Meaningless Game | Codeforces Round #426 (Div. 2)
/* CodeForces 834C - The Meaningless Game [ 分析,数学 ] | Codeforces Round #426 (Div. 2) 题意: 一对数字 a,b 能不 ...
- MDK中问题:warning : type qualifier is meaningless on cast type return 的解决
在MDK编译代码时,有时会出现这样的警告, warning : type qualifier is meaningless on cast type return 在MDK中,作如下设置: 即添加 : ...
随机推荐
- 从windows到Mac的那些坑
今年入职一家新公司 公司办公统一使用Mac pro,所有国产软件不允许使用,只允许装国外的.开源的软件,,,,(这对一个从来没用过Mac的人来说,可真是头疼了一阵子) 经过几天的摸索,作一个简单的小总 ...
- 关于晶体问题TCXO_14.7456MHZ
如何判断热点的晶体好不好,首先,看偏移,偏移为0的晶体一般就是温补晶体,当然偏移是500或者几百固定的也是温补,但是不是我们首选的温补晶体 因为偏移为0非常省事,这是系统默认的偏移0,因此设置好频率就 ...
- 还在用SimpleDateFormat格式化时间?小心经理锤你
还在用SimpleDateFormat格式化时间?小心经理锤你 场景 本来开开心心的周末时光,线上突然就疯狂报错,以为程序炸了,截停日志,发现是就是类似下述一段错误 java.lang.NumberF ...
- ROS 机器人技术 - 解决 ROS_INFO 不能正确输出 string 的问题!
一.输出「??」 项目调试一个节点,打印 ROS 信息时发现设置的节点名称都是问号: ROS_INFO("[%s]: camera_extrinsic_mat", kNodeNam ...
- [Google Guava] 强大的集合工具类:java.util.Collections中未包含的集合工具
转载的,有问题请联系我 原文链接 译文链接 译者:沈义扬,校对:丁一 尚未完成: Queues, Tables工具类 任何对JDK集合框架有经验的程序员都熟悉和喜欢java.util.Collecti ...
- [转] strtol()详解
点击此处阅读原文 今天,在review 一些代码的时候,看到了strtol()这个函数,由于以前使用它的时候,还没有深刻的了解,这次,我决定探个究竟. 网上关于这个函数的资料大都来源于同份资料,lin ...
- 2019-02-01 Python爬虫爬取豆瓣Top250
这几天学了一点爬虫后写了个爬取电影top250的代码,分别用requests库和urllib库,想看看自己能不能搞出个啥东西,虽然很简单但还是小开心. import requests import r ...
- map集合 可变对象
#map集合 可变对象 stu = {'xiaoming':34,'xiaohogn':56,'小王':569} print(stu['小王']) ''' 如果key不存在,dict就会报错: > ...
- 三角函数与缓入缓出动画及C#实现(图文讲解)
日常经常能看到缓入缓出的动画效果,如: 1,带缓入缓出效果的滚动条: 2,带缓入缓出效果的呼吸灯: 像上面这种效果,就是用到了三角函数相关的知识,下面将从头开始一步步去讲解如何实现这种效果. 一.基础 ...
- 使用DragonFly进行智能镜像分发
Dragonfly 是一款基于 P2P 的智能镜像和文件分发工具.它旨在提高文件传输的效率和速率,最大限度地利用网络带宽,尤其是在分发大量数据时,例如应用分发.缓存分发.日志分发和镜像分发. 在阿里巴 ...