P1763 90 1WA 求助
  • 板块题目总版
  • 楼主yuhaoran666
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/11/26 22:31
  • 上次更新2023/10/27 01:18:51
查看原帖
P1763 90 1WA 求助
571740
yuhaoran666楼主2022/11/26 22:31

CPlusPlus

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define N 1010 
ll ans[N], a, b, cnt, tmp[N] = {1};
bool f;
ll gcd(int a, int b) {
	return (!b ? a:gcd(b, a % b));
}
void dfs(ll x,ll y,ll z) {
	if (z + 1 == cnt) {
		if (x == 1) {
			tmp[z + 1] = y;
			f = true;
			if (tmp[z + 1] < ans[z + 1] || ans[z + 1] == 0) memcpy(ans, tmp, sizeof(tmp));
		}
		return;
	}
	ll first = (y % x) ? (y / x + 1):(y / x);
	for (ll i = max(tmp[z] + 1, first); i <= ceil(y / x) * (cnt - z); i++) {
		tmp[z + 1] = i;
		ll nexta, nextb, g;
		nexta = x * i - y, nextb = y * i;
		g = gcd(nexta, nextb);
		dfs(nexta / g, nextb / g, z + 1);
	}
}
int main() {
	cin >> a >> b;
	ll g = gcd(a, b);
	for (cnt = 1; ; cnt++) {
		dfs(a / g, b / g, 0);
		if (f) break; 
	}
	for (int i = 1; i <= cnt; i++) cout << ans[i] << " ";
	return 0;
}

这么长时间没人帮我

2022/11/26 22:31
加载中...