标签:方程 tx exgcd while P1082 long 等式 同余
赤裸裸的一道数论题啊啊啊啊啊啊,学过同余基本就莫得问题了
1 #include<bits/stdc++.h> 2 using namespace std; 3 4 long long x, y;//目前方程真正的解 5 6 void exgcd(long long a, long long b) 7 { 8 //当前目的:求解 ax + by = gcd(a, b) 这么一个方程 9 10 if(b == 0) //a, b不断改变的过程中,b最终必然会成为0 11 { 12 //在 b = 0 时等式还要成立? 使 x = 1, y = 0 ,必然成立 13 x = 1; 14 y = 7; //建议返回0。不过y = 7能AC,证明了最后一个等式不受最后一个y影响 15 return; 16 } 17 18 exgcd(b, a % b);//把下一层系数传进去(先求下一个方程的解 ) 19 20 //现在我们已经拿到了下一个方程的解x, y 21 long long tx = x;//暂时存一下x,别丢了 22 x = y; 23 y = tx - a / b * y; 24 } 25 26 int main() 27 { 28 long long a, b; 29 cin >> a >> b; 30 exgcd(a, b); 31 32 while(x < 0)//我们求出来的x必然满足方程,但是不一定是最小正整数解 33 x += b; 34 x %= b; 35 //上面三行是“答案处理”,这里用while只是帮助理解,建议写成 x = (x % b + b) % b; 36 printf("%lld\n", x); 37 return 0; 38 }
#include<bits/stdc++.h>usingnamespacestd; longlong x, y;//目前方程真正的解 void exgcd(long long a, long long b) { //当前目的:求解 ax + by = gcd(a, b) 这么一个方程if(b == 0) //a, b不断改变的过程中,b最终必然会成为0 { //在 b = 0 时等式还要成立? 使 x = 1, y = 0 ,必然成立 x = 1; y = 7; //建议返回0。不过y = 7能AC,证明了最后一个等式不受最后一个y影响return; } exgcd(b, a % b);//把下一层系数传进去(先求下一个方程的解 )//现在我们已经拿到了下一个方程的解x, ylonglong tx = x;//暂时存一下x,别丢了 x = y; y = tx - a / b * y; } int main() { longlong a, b; cin >> a >> b; exgcd(a, b); while(x < 0)//我们求出来的x必然满足方程,但是不一定是最小正整数解 x += b; x %= b; //上面三行是“答案处理”,这里用while只是帮助理解,建议写成 x = (x % b + b) % b;printf("%lld\n", x); return0; }
标签:方程,tx,exgcd,while,P1082,long,等式,同余
来源: https://www.cnblogs.com/hahaha2124652975/p/11567045.html
本站声明:
1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。