[P8255 NOI Online 2022 普及组] 数学游戏(民间数据) - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

题目: z = xy*gcd(x,y)

已知:z, x 求 y

思路一,暴力20%

直接上代码

#include <iostream>
#include <cstring>
#include <algorithm>
typedef long long LL;using namespace std;LL gcd(LL a, LL b) // 欧几里得算法
{return b ? gcd(b, a % b) : a;
}LL solve(LL x, LL z)
{if (z % x != 0){return -1;}else{LL y_gcx = z / x;for (LL i = 1; i <= y_gcx; i++){if (gcd(i, x) * i == y_gcx)return i;}return -1;}
}int main()
{int t;cin >> t;while (t--){LL x, z;cin >> x >> z;cout << solve(x, z) << endl;}return 0;
}

思路二,数学解100%

解: x与y 的最大公约数设为a. 则gcd(x,y) = a.
z=x∗y∗gcd(x,y)t=z/x=y∗gcd(x,y)设:x=k∗a设:y=l∗al与k的最大公约数为1.t1=gcd(x∗x,y∗gcd(x,y))t1=gcd(k∗a∗k∗a,l∗a∗a)a=sqrt(t1)t1一定是完全平方数。那么y有一定存在解。且解为t/a;如果不是的话,则y不是整数,无解,返回−1。z = x*y*gcd(x,y)\\ t = z/x = y*gcd(x,y)\\ 设: x = k*a\\ 设: y = l*a\\ l与k 的最大公约数为1. \\ t1 = gcd(x*x, y*gcd(x,y))\\ t1 = gcd(k*a*k*a,l*a*a)\\ a = sqrt(t1)\\ t1 一定是完全平方数。那么y有一定存在解。且解为t/a; 如果不是的话,则y不是整数,无解,返回-1。 z=x∗y∗gcd(x,y)t=z/x=y∗gcd(x,y)设:x=k∗a设:y=l∗al与k的最大公约数为1.t1=gcd(x∗x,y∗gcd(x,y))t1=gcd(k∗a∗k∗a,l∗a∗a)a=sqrt(t1)t1一定是完全平方数。那么y有一定存在解。且解为t/a;如果不是的话,则y不是整数,无解,返回−1。

Code

#include <iostream>
#include <cstring>
#include <algorithm>
#include <math.h>
typedef long long LL;using namespace std;LL gcd(LL a, LL b) // 欧几里得算法
{return b ? gcd(b, a % b) : a;
}LL solve(LL x, LL z)
{if (z % x != 0){return -1;}else{LL y_gcx = z / x;LL tem = gcd(x * x, y_gcx); // 先求出:x*x和y*gcd(x,y)公约数。 LL t = sqrt(tem);//sqrt正常返回double, 如果这个公约数的开方恰好等于一个整数。 if (t * t == tem)// 如果这个公约数的开方恰好等于一个整数。return y_gcx / t;// 解出yelsereturn -1;}
}int main()
{int t;cin >> t;while (t--){LL x, z;cin >> x >> z;cout << solve(x, z) << endl;}return 0;
}

介绍视频参考如下:

B站视频链接

洛谷P8255 解法 2020328相关推荐

  1. java 旅行家的预算_洛谷 P1016 旅行家的预算 Java解法

    洛谷 P1016 旅行家的预算 Java解法 洛谷 P1016 旅行家的预算 Java解法 package com.two; import java.util.Scanner; public clas ...

  2. 洛谷OJ上的A+B花(zhuang)式(bi)解法

    转眼间快到了8月,一想自己都毕业好久了,很怀念曾经在各大OJ上刷题的时光,今天无意在一个算法群里看到最近有个叫洛谷的oj网站貌似蛮火的,于是注册了一个下进去看一看,顺手打开了A+B problem,然 ...

  3. 洛谷P1433 吃奶酪--Java解法(货郎担问题)

    洛谷P1433 吃奶酪–Java解法(货郎担问题) 题目链接 解决思想 本题目是一个典型的货郎担问题,即从(0,0)点出发,所有点仅经过依次(我们可以用反证法证明如果有一个点经过两次其路径一定比每个点 ...

  4. 洛谷P2141珠心算测验 C++解法

    #include<stdio.h> #include <iostream> #include <iomanip> #include<cmath> usi ...

  5. 洛谷P1007——独木桥 解法 (C++)

    Hi 又见面了呀 今天来一道洛谷的题 独木桥 先上个题目传送门(点击蓝字即可观看) 注:该博客已在2020年6月24日更新,更新内容:修复了一些由于字体原因导致的错误 题目背景 战争已经进入到紧要时间 ...

  6. 洛谷P1554——梦中的统计 解法(C++)

    Hi 让大家久等了 今天再再再再再再再再再再再...来一道洛谷的题 梦中的统计(你们是不是已经厌烦了洛谷) 老规矩,先上个题目传送门(点击蓝字即可观看) 题目背景 Bessie 处于半梦半醒的状态.过 ...

  7. 【Java题解】洛谷题目P3205合唱队-区间动态规划解法

    题目描述: [HNOI2010]合唱队 - 洛谷https://www.luogu.com.cn/problem/P3205 题目信息提取: 这个题目要求我们按照某种顺序将这个队伍中的所有人按照从左到 ...

  8. 洛谷 - 试炼场(全部题目备份)

    整理的算法模板合集: ACM模板 目录 1.新手村 1 - 1 洛谷的第一个任务 1 - 2 顺序与分支 1 - 3 循环!循环!循环! 1 - 4 数组 1 - 5 简单字符串 1 - 6 过程函数 ...

  9. 记录奥林比克/课程录制 洛谷P2255 [USACO14JAN]

    题面在最下方. 本题贪心可解,我也不是很懂动规解法(双线程DP?) 先把各个课程(比赛)按结束时间从小到大排序,记录两个摄像机的结束时间. 然后枚举课程,如果某个课程的开始时间早于任何一台摄像机的结束 ...

最新文章

  1. 微信表白墙 微信小程序 吐槽墙 表白墙 java 开发
  2. java 发送邮件
  3. 【译】A Note On Charity Through Marginal Price Discrimination
  4. MYSQL数据库应用优化
  5. [编程题] 被3整除
  6. Linux系统开发: 学习Linux下网络编程
  7. 旧版本ios软件整理
  8. 关于各类图形CAD底层内核
  9. httpClient4 设置代理
  10. Qt开发经验小技巧196-200
  11. SQL中drop,delete和truncate的异同
  12. DIY,PC采购,服务器介绍
  13. 智能合约Smart Contract技术详解
  14. 计算机固态地址是什么,SSD固态硬盘安装到笔记本电脑什么位置比较合适
  15. python3 中的 md5 加密
  16. Java程序界面设计
  17. 更新被拒绝,因为远程仓库包含您本地尚不存在的提交
  18. Web前端大作业—里约热内卢奥运会(html+css+javascript)
  19. Android IPC机制之IPC概念、Android 多进程和相关基础知识
  20. 大学生如何在竞争激烈的就业市场中脱颖而出

热门文章

  1. ONF(Open Networking Foundation)
  2. 高二计算机课程难点,巧用信息技术手段 突破高中数学课堂教学的重难点
  3. 更改linux键盘布局,无法更改Centos 7上的键盘布局
  4. app开发者帐号(个人开发帐号、团队帐号、企业帐号、教育帐号)
  5. 如何计算802.11 PHY Data Rate (11ac/11ax)
  6. jpa级联添加_jpa级联(Cascade)操作
  7. 软件开发模型之迭代模型
  8. 19.React Native动画Animated效果三种动画类型二;
  9. helm模板开发-流程控制、作用域、循环、变量(三)
  10. 2020 idea 查看内存消耗_查看运行时某个java对象占用JVM大小及通过idea查看java的内存占用情况...