全部评论
while a%b!=0: a, b=b, a%b. return b
把a用字符数组存起来,从后往前,每次取18位,转成long long类型的数字再对b取模得到x,然后再取18位转数字+x后对b取模得到新的x。最终a将成为一个long long类型的数字,接着再辗转相除法求***,不知道这样理解正确吗。
#include <iostream>
using namespace std;
char s[100005];
long long gcd(long long a, long long b)
{ return a % b == 0 ? b : gcd(b, a % b);
}
int main()
{ scanf("%s", s + 1); long long a; cin >> a; long long b = 0; for (int i = 1; s[i] != '\0'; i++) { b = (b * 10 + s[i] - '0') % a; } cout << gcd(b, a); return 0;
}
这是某大佬粘出来的代码,不是很懂~~
今天是网易互娱还是网易互联网啊。。
同样求解答
这道题的重点在哪里?是使用辗转相除法来实现?
相关推荐
点赞 评论 收藏
分享