题意:现在两个人做游戏,每个人刚开始都是数字1,谁赢了就能乘以k^2,输的乘以k(k可以是任意整数,每次不一定相同)现在给你最终这两个人的得分,让你判断是否有这个可能,有可能的话Yes,否则No。

分析:这题其实想起来也很好想,写起来也很好写,主要还是分享一下处理类似细节的方法

  首先还是先回归到这个题,显然如果满足条件,首先a*b=x³,a,b分别为这两人的最终得分,然后考虑一下还需满足什么性质

  我们还是从只有一轮开始考虑,a=k²,b=k,a*b=k³,这里就很容易想到几种判断方法,比如a=b²,或者a/b=k=³√a*b,等等,只要这个判断方法只与a与b有关就行(废话)

  再考虑两轮的情况,a=k1²*k2²,b=k1*k2,这看上去上面两种方法都会判断为yes,答案也真就是yes

  但如果a=k1²*k2,b=k1*k2²,这样看上去好像两种方法都会判断为no,而正确结果应该是yes,

  那么到底应该怎么做呢?

  不难发现的是,无论这两个数怎么变换,a=k1^c1*k2^c2*k3^c3……*kn^cn,b=a=k1^d1*k2^d2*k3^d3……*kn^dn,其中ci+di=3

  a和b都是在k1*k2*k3*……*kn到k1²*k2²*k3²*……*kn²之间浮动,而且他们显然都满足一个性质即能整除k1*k2*……*kn=³√a*b、*

  那么我们大胆假设,满足a*b=x³且a,b能整除³√a*b的数一定满足条件吗

/*  这对于k1,k2,……,kn互质来说一定是显然成立的,但如果不一定互质,那可能很多人就有些犹豫或者迷糊

  既然这样,那么我们就把不互质的转化成互质的

  很容易想到,每一个ki^ci或di都会变成p1^e1^ci*p2^e2^ci*……*pn^en^ci,当然这里的pi是质数,而ei则是非负整数,当然上面的结论也要搬过来,e1*ci+e1*di=3(这里前面一个e1是指a中ki的系数,后一个是b中的)

  a=p1^f1*p2^f2*p3^f3……*pn^fn,b=p1^g1*p2^g2*p3^g3……*pn^gn,这里的fi=每个ki的ei与ci的乘积,(写起来变量名太容易冲突了,理解就行)

  当然,联系上面的结论,很容易得到fi+gi=3h,

  说了这么多,可能很多人都忘了我们要干啥了,现在我们把不互质的转化成了互质的,显然这里面fi的最小值还是h,所以也就得证了

*/  当然,我这上面证明的有点乱,但其实真的很好证,当然如果不会证也没关系,而且今天我主要分享的也不是这个,这个/*   */的大可以不看

  先再梳理一下,我们只需要保证a*b=x³且a%x==0&&b%x==0即可 

  那么如何判断a*b是不是立方数呢?

  当然我们可以二分,不过cmath里面pow这个函数给了我们方便

  有些人可能只知道p=pow(q,2),不知道p=pow(q,1/2)

  对,这其实就与sqrt等价了

  那么这个题我求出了pow(a*b,1/3)然后呢?

  只需要判断这个数是不是整数即可,那这又咋判断呢?

  首先我们要知道的是double是有精度的,一般为6-7位,具体是什么意思呢?

这显然没啥问题

这问题就出来了,而且这不光是在小数的时候,整数运算虽然问题不是很大,但也要小心

当然,不需要太过紧张,首先我这里y是1e20,都超过longlong的范围了,而上面的999999在你保留6,7位的时候也是完全没有影响的,但却有可能产生0.000001的误差

这在平日的输出结果中没有任何影响,但在判断是否相等或者将其赋值给int以求取整时便会有着灾难性的问题出现,比如

这里就需要利用我们的精度了

如果我们要表达y==q要改成abs(y-q)<=0.000001

而如果我们要表达k=(int)q要改成k=(int)(q+0.000001)

所以又说了这么多,再回到开始的问题,我们需要判断这个数是否是整数,那么就可以用abs(x-(int)(x+0.000001))<=0.000001来判断

还有几点要注意的,

1. a*b可能爆int

2. pow里面后面那个要写1.0/3,如果写1/3的话就成0了(1/3是int类型的)

3. Yes还是YES还是yes,No还是NO还是no看清楚

代码:

#include<cstdio>
#include<cmath>
using namespace std; #define ll long long const double minlf=0.000001; int pd(ll x)
{
double sq=pow(x,1.0/);
int sqr=(int)(sq+minlf);
if(abs((double)sqr-sq)<=minlf) return sqr;
else return ;
} int main()
{
int n,x,y;
scanf("%d",&n);
while(n--)
{
scanf("%d%d",&x,&y);
int now=pd((ll)x*y);
if(now&&x%now==&&y%now==) printf("Yes\n");
else printf("No\n");
}
return ;
}

题目分享V的更多相关文章

  1. 题目分享E 二代目

    题意:一棵点数为n的树,每个节点有点权,要求在树中中找到一个最小的x,使得存在一个点满足max(该点点权,该点相邻的点的点权+1,其他点的点权+2)=x 分析:首先要能把题目转化为上述题意 首先题目让 ...

  2. 题目分享T

    题意:蛐蛐国里现在共有n只蚯蚓(n为正整数).每只蚯蚓拥有长度,我们设第i只蚯蚓的长度为a_i(i=1,2,...,n),并保证所有的长度都是非负整数(即:可 能存在长度为0的蚯蚓).每一秒,神刀手会 ...

  3. 2019年腾讯PHP程序员面试题目分享

    有需要学习交流的友人请加入交流群的咱们一起,有问题一起交流,一起进步!前提是你是学技术的.感谢阅读! 点此加入该群​jq.qq.com 1. php 的垃圾回收机制 PHP 可以自动进行内存管理,清除 ...

  4. 20190924-LeetCode解数独题目分享

    解决数独 题目描述 编写一个程序,通过已填充的空格来解决数独问题. 一个数独的解法需遵循如下规则: 数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列只能出现一次. 数字 1-9 在每一个以 ...

  5. 题目分享F 二代目

    题意:T个点R种双向边,P种单向边,求点S到每个点的最短距离 分析:(这再看不出来是spfa就该**了) 首先,这题能否用spfa就看他是否有负环呗,显然,双向边的权值非负,单向边还有个啥政策,总之显 ...

  6. 题目分享D 二代目

    题意:给定一个T条边的无向图,求S到E恰好经过N条边的最短路径 T≤100 N≤1000000 分析:(据说好像假期学长讲过) 首先很容易想到的是dp[i][j][k]表示从i到j经过k条边的最短路径 ...

  7. 题目分享C 二代目

    题意:一个数列是由 1 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2 3 4 5 6.....组成,也就是1-1,1-2,1-3......并且如果遇到多位数也要拆成数字比如1-10 ...

  8. 题目分享Y

    题意:给出一个n个点n条边的图且不一定连通(原题面为每个节点出度为1),相邻节点不能同时被选,每个节点有其对应价值,求最多能获得多少价值?n<=1e6,val[i]<=1e6 分析:很容易 ...

  9. 题目分享X

    题意:一张票有n位数,如果这张票的前一半数字的和等于后一半数字的和(n一定是偶数),就称这张票为快乐票.有些数被擦除了,标记为’?’(’?‘的个数也是偶数),现在Monocarp 和 Bicarp 进 ...

随机推荐

  1. 两个div在同一行显示

    栅格系统需要引用bootstrap插件 <script src="~/Scripts/BootStrap/bootstrap.js"> </script> ...

  2. Java成长第四集--文本处理IO流

    Java IO流在实际业务中使用的频率还是蛮高的,一些业务场景比如,文件的上传和导出,文件的读取等基本都是通过操作IO流来实现的,所以IO流是我们现在学习过程中必须要掌握的技能之一,熟练的使用IO流, ...

  3. Thinking in Java,Fourth Edition(Java 编程思想,第四版)学习笔记(十三)之Strings

    Immutable Strings Objects of the String class are immutable. If you examine the JDK documentation fo ...

  4. animation-play-state 在 ios 中不生效的解决办法(JS篇)

    我们要实现动画的播放和暂停,animation-play-state 在安卓端可以使用,但是在 ios 中不起作用,这时可以使用 js 来实现相同效果. 原理 通过 js 获取当前元素的 transf ...

  5. 【题解】P2024 [NOI2001]食物链 - 数据结构 - 并查集

    P2024 [NOI2001]食物链 声明:本博客所有题解都参照了网络资料或其他博客,仅为博主想加深理解而写,如有疑问欢迎与博主讨论✧。٩(ˊᗜˋ)و✧*。 题目描述 动物王国中有三类动物 \(A,B ...

  6. .NET Core下的开源分布式任务调度系统ScheduleMaster-v2.0低调发布

    从1月份首次公开介绍这个项目到现在也快4个月了,期间做了一些修修补补整体没什么大的改动.2.0算是发布之后第一个大的版本更新,带来了许多新功能新特性,也修复了一些已知的bug,在此感谢在博客.Issu ...

  7. kafka相关术语名词

    Topic:标签名,一个消息队列的名称 Producer:生产者,发布消息 Consumer:消费者,订阅发布消息,进行处理的存在 Broker:kafka集群,有一个.多个Topic Partiti ...

  8. 十分钟通过一个实际问题,真正教会大家如何解决Bug

    前言 这篇文章从实际问题 -> 问题解决步骤 -> 问题解决思路,帮助大家能够明白如何在程序中发现问题,定位问题,解决问题.并真正理解那些问题解决思路. 首先说说这个实际问题是什么,又是怎 ...

  9. http_response_code()和header()

    1.http_response_code — 获取/设置响应的 HTTP 状态码向服务器发送成功状态码:http_response_code(200); 返回值如果提供了response_code,将 ...

  10. Android-网页解析-gson的使用

    相对于较为传统的Json解析来说,google共享的开源Gson在解析速度和所使用的内存在有着明显的优势,虽然说阿里巴巴也提供了fastgson包,但是它跟Gson的处理速度大同小异,只是底层实现的原 ...