一篇文章讲明白LOJ6465.二平方和定理

简介: 一篇文章讲明白LOJ6465.二平方和定理

SOL:

由费马二平方和定理,解是存在且唯一的。

那么x在高斯整数意义下(在高斯整数意义下,唯一分解定理同样成立),有两个互扼的非平凡约数。a+bi 与 a-bi、

(a+bi)(a-bi)=aa+bb=x,可见a和b就是我们要求的答案。

我们找一个数k,使 x| kk+1 ,那么 x|(k+i)(k-i)

又因为gcd(a,b)=1,gcd(k,1)=1;

所以gcd(k+i,k-i)=1(这样的写法其实不严谨,我只是表示k+i与k-i互质)

gcd(a+bi,a-bi)=1

故gcd(x,k+i)=a+bi 或 a-bi

k的话,可以随机找。

高斯整数上的gcd,可以类比整数上的gcd。

#include

#define LO __int128

#define LL long long

#define pii pair

#define x first

#define y second

using namespace std;

LL qsm(LL x,LL y,LL mo){

static LL anw;

for (anw=1,x%=mo;y;y]=1,x=(LO)xx%mo) if (y1) anw=(LO)anwx%mo;

return anw;

}//代码效果参考:http://www.ezhiqi.com/zx/art_2166.html

pii operator + (pii a,pii b){

return pii(a.x+b.x,a.y+b.y);

}

pii operator - (pii a,pii b){

return pii(a.x-b.x,a.y-b.y);

}

pii operator (pii a,pii b){

return pii(a.xb.x-a.yb.y,a.xb.y+a.yb.x);

}

pii operator % (pii a,pii b){

LO fm=LO(b.x)b.x+LO(b.y)b.y;

LO aa=LO(a.x)b.x+LO(a.y)b.y;

LO bb=-LO(a.x)b.y+LO(a.y)b.x;

return a-pii(llround(aa/(long double)fm),llround(bb/(long double)fm))b;

}

pii gcd(pii a,pii b){

if (b.x==0b.y==0) return a;

return gcd(b,a%b);

}//代码效果参考:http://www.ezhiqi.com/bx/art_3235.html

int T; LL x,p,k; pii L;

int rand(){

static int X=23333; return X^=X[5,X^=X]17,X^=X[13;

}

signed main () {

scanf("%d",T);

while (T--) {

scanf("%lld",x);

while (1) {

p=rand()%(x-2)+2;

if (qsm(p,x-11,x)==x-1){

k=qsm(p,x-12,x);

break;

}

}

L=gcd(pii(x,0),pii(k,1));

L.x=abs(L.x),L.y=abs(L.y);

if (L.x>L.y) swap(L.x,L.y);

printf("%lld %lld\n",L.x,L.y);

} return 0;

}//代码效果参考:http://www.ezhiqi.com/bx/art_2637.html

相关文章
|
存储 Linux 程序员
Linux内存管理宏观篇(二):不同角度去看内存(软件)
Linux内存管理宏观篇(二):不同角度去看内存(软件)
299 0
|
机器学习/深度学习 数据可视化 算法
吴恩达机器学习--逻辑回归
吴恩达机器学习--逻辑回归
298 0
|
9月前
|
人工智能 测试技术 API
通义灵码 + 魔搭MCP:全流程构建创空间应用
最近,通义灵码上线 MCP(ModelScope Cloud Platform)功能,从之前代码生成及修改的基础功能,到可以使用MCP服务连接更多功能,开发者可以实现从 代码爬取、模型推理到应用部署
2349 27
|
8月前
|
JavaScript 前端开发
怀孕b超单子在线制作,p图一键生成怀孕,JS代码装逼娱乐
模拟B超单的视觉效果,包含随机生成的胎儿图像、医疗文本信息和医院标志。请注意这仅用于前端开发学习
|
供应链 物联网 区块链
新技术浪潮下的未来世界:区块链、物联网与虚拟现实的融合与创新
【9月更文挑战第27天】随着科技的不断进步,新兴技术如区块链、物联网和虚拟现实正在逐步渗透到我们生活的方方面面。这些技术不仅改变了我们的生活方式,还在不断地推动着社会的发展和进步。本文将探讨这些新兴技术的发展趋势和应用场景,以及它们如何相互融合,共同构建一个更加智能、高效和互联的未来世界。
|
分布式计算 Java Scala
从源代码编译构建Apach Spark3.2.4
使用官方预编译版本的Spark已经足够满足日常需求。当在特定的场景和需求下,重新编译Spark提供了更大的灵活性和控制权,适用于需要特定功能、定制化配置或对Spark进行扩展的场景。
644 1
从源代码编译构建Apach Spark3.2.4
|
机器学习/深度学习 编解码 人工智能
YOLO虚幻合成数据生成器
UnrealSynth 基于 UE5 虚幻引擎开发,目前支持 YOLO 系列模型合成数据的生成。
612 21
|
编译器
模板初阶(2):函数模板的匹配原则,类模板的实例化
模板初阶(2):函数模板的匹配原则,类模板的实例化
|
XML Java Android开发
【Android App】给三维的地球仪贴上动物贴纸实战(附源码和演示 超详细必看)
【Android App】给三维的地球仪贴上动物贴纸实战(附源码和演示 超详细必看)
329 1
|
前端开发
Freemarker动态模板渲染&flyingsaucer将html转PDF(多页固定头尾)
Freemarker动态模板渲染&flyingsaucer将html转PDF(多页固定头尾)