文章

5

粉丝

65

获赞

1

访问

3.0k

头像
反转公约数 题解:直接模拟即可
P1911 厦门大学2018年机试
发布于2023年7月16日 22:16
阅读数 413

先对输入的数字进行反转,再使用gcd算法求公约数即可。

数字反转处理:

用一个临时变量存储第一个数字,使用%10来获得第一个数字

然后进行进位相加:res=res*10+a即可

最后还需要对x/=10操作,获取后几位数字

gcb求最大公约数:

递归求解 return b?gcd(b,a%b):a

#include <bits/stdc++.h>
using namespace std;

int reverse(int x) { // 反转函数
	int res = 0;
	while (x) {
		int a = x % 10;
		res = res * 10 + a;
		x /= 10;
	}
	return res;
}

int gcd(int a, int b) {
	return b ? gcd(b, a % b) : a;
}

int main() {
	int a, b;
	cin >> a >> b;
	a = reverse(a);
	b = reverse(b);
	cout << gcd(a, b);
	return 0;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发