P1082 同余方程

题目地址

赤裸裸的一道数论题啊啊啊啊啊啊,学过同余基本就莫得问题了

 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; }

转载于:https://www.cnblogs.com/hahaha2124652975/p/11567045.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值