首页
比赛
tracker
题库
课程
竞赛讨论区
登录
/
注册
去牛客
首页
>
小红的 gcd
9条解析
开通博客写题解
取舍_fan
发表于 2024-07-14 21:58:26
D题 首先有以下性质 1. (a+b)%mod 等价于 a%mod + b%mod 2. a*b%mod 等价于 a%mod*b%mod (仅当a*b没有溢出时) 该题求解gcd(a,b) a是大数 根据辗转相除法 gcd(a,b)=gcd(b,
展开全文
Lambda_L
发表于 2025-12-02 00:51:31
思路先看一眼题,gcd,再看一眼数据,a 的十进制位数最大可以达到1e6!这意味着a可能非常大! !超过了long long类型所能表示的范围。由于a过大,我们不能直接使用标准的欧几里得算法,因为a无法作为一个long long或者int类型传入计算。核心处理当 a是一个大数时, 欧几里得算法的操作
展开全文
自由的风0450
发表于 2025-12-02 07:43:07
先对大整数取模,再进行辗转相除法 #include <iostream> #include<string> using namespace std; long long mod(const string&s,long long b){ long long r
展开全文
olone
发表于 2025-12-02 11:09:56
#include<iostream> #include<cmath> #include<vector> #include<algorithm> #define int long long using namespace std; const int
展开全文
付晗成
发表于 2025-12-02 22:01:53
//看完题目:哇,这么水! //看完数据范围:long long 都存不下,该怎么办? //不过,我突然想到:将a对b取模,就可以存下了,随后便可用__gcd()计算 //完整代码如下,第16行是取模部分 #include<bits/stdc++.h> #define int long
展开全文
此在Dasein
发表于 2025-12-02 06:44:51
算法思想 由于 的位数最大可达 ,无法直接存储为普通整数,而 在常规整数范围内。计算 可利用欧几里得算法的性质: 因此只需先求出 ,之后再用常规的欧几里得算法计算两数的最大公约数。 可通过模拟大数取模的过程:从左到右逐位处理,用当前余数 更新为 最终 即为所求余数。 代码实现 #in
展开全文
quchen666
发表于 2025-12-02 10:19:51
#include <bits/stdc++.h> using namespace std; typedef long long ll; int main() { string a; ll b; cin>>a>>b; ll res
展开全文
iui2006x
发表于 2025-12-02 10:49:06
由于精度问题,必须要开longlong,其实核心代码很简单 #include <bits/stdc++.h> using namespace std; int main() { string sa; long long a = 0, b; cin >>
展开全文
花碗
发表于 2025-12-02 20:14:35
高位数求最大公约数 注意到a%b后就在int范围内了 故先取% 在余数相乘过程中可能会越界用long long转换对大数运算时要考虑每次加乘运算后是否越界 #include <iostream> #include<cstring> using namespace std;
展开全文
查看本题
查看本题讨论
相关比赛
85852-牛客周赛51内测
进入比赛
86034-牛客周赛 Round 51
进入比赛
86794-实验室模拟赛7.16
进入比赛
87112-加账号
进入比赛
87250-试验题3
进入比赛
等你来战
查看全部
牛客练习赛147
报名截止时间:2025-12-19 21:30
牛客周赛 Round 123
报名截止时间:2025-12-21 21:00
牛客小白月赛126
报名截止时间:2025-12-26 21:00
牛客2025跨年场
报名截止时间:2026-01-01 00:05
2026牛客寒假算法基础集训营1
报名截止时间:2026-02-03 18:00
2026牛客寒假算法基础集训营2
报名截止时间:2026-02-05 18:00
扫描二维码,关注牛客
意见反馈
下载牛客APP,随时随地刷题