HDU5974 A Simple Math Problem---数论--转化解方程
2024-10-18 03:04:18
感谢:http://blog.csdn.net/mirror58229/article/details/63685884
题意:x+y=a lcm(x,y)=b 求x,y
12WCases + b 10^9 + a 10^4
所以肯定不是枚举……肯定是公式题
接下来就是转化
x+y=a
x*y/gcd(x,y)=b
令gcd(x,y)=c
x=i*c,y=j*c
i*c+j*c=a
c*i*j=b
c*(i+j)=a
c*i*j=b
因为i j互质 所以gcd(a,b)=c=gcd(x,y) 【最重要的条件】
所以一开始就能得到c值,剩下就是求根
i+j=a/c
i*j=b/c
i+b/(c*i)=a/c
c*i2-a*i+b=0
a.b.c已知二元一次方程组求根 小的那个为i 大的为j
最后因为求根时整除可能会出现小数,这是不满足题意的 ,丢掉这种情况即可
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
typedef long long ll;
ll gcd(ll a,ll b)
{
return b==?a:gcd(b,a%b);
}
int main()
{
ll a,b;
while(scanf("%lld%lld",&a,&b)!=EOF)
{
ll c=gcd(a,b);
ll d=a*a-*b*c;
if(d<)
{
printf("No Solution\n");
continue;
}
ll i=(a-sqrt(d))//c;
ll j=a/c-i;
ll x=c*i;
ll y=c*j;
if(x*y/c==b)
printf("%lld %lld\n",x,y);
else
printf("No Solution\n");
}
}
最新文章
- struts2学习笔记--OGNL表达式1
- 利用JavaScript生成随机数字!
- tomcat启动指定项目
- 昨日尝试使用百度死链提交,使用lCGI规则提交
- php-fpm.conf两个至关重要的参数
- ffmepg 指定RTSP网络连接模式UDP还是TCP
- VMware linux与windows文件共享
- SQL Server 2008 数据库误删除数据的恢复
- poj2942 Knights of the Round Table,无向图点双联通,二分图判定
- Unicode字段也有collation
- PAT (Advanced Level) 1026. Table Tennis (30)
- [bzoj1227] [SDOI2009]虔诚的墓主人
- curl获取结果乱码的解决方法之CURLOPT_ENCODING(curl/Post请求)
- ThinkPHP3.2.3框架下接入阿里云短信服务接口实现:注册登录
- 处理springmvc的post和get提交参数乱码问题
- uva10003
- Python入门之面向对象编程(一)面向对象概念及优点
- 【CSS】清除浮动的五种方式
- HDU 1116 Play on Words(并查集和欧拉回路)(有向图的欧拉回路)
- USACO 6.1 Cow XOR
热门文章
- scrapy--json(喜马拉雅Fm)(二)
- 11.VUE学习之提交表单时拿到input里的值
- 010---Django的模型层(2)
- [Codeforces375D]Tree and Queries(莫队算法)
- 16,Flask-Migrate
- Android开发——弹性滑动的两种实现方式
- Reverse Word in a String(翻转字符串)&;字符串最后一个单词的长度
- erlang连接mysql [转]
- 云计算之路-阿里云上:OCS问题的进展以及11:30-11:50遇到的问题
- 【Adaptive Boosting】林轩田机器学习技法