社区讨论

求助

AT_arc159_b[ARC159B] GCD Subtraction参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@m1myz52r
此快照首次捕获于
2024/09/29 10:36
去年
此快照最后确认于
2024/09/29 11:50
去年
查看原帖
为啥这份代码会 T 啊
CPP
#include<bits/stdc++.h>
#define ll long long
#define pb push_back
#define fi first
#define se second

using namespace std;

ll a,b;

ll gcd(ll a,ll b){
	if(!b) return a;
	return gcd(b,a%b);
}

vector <ll> q;
ll calc(ll a,ll b){
	if(!a || !b) return 0;
	if(a<b) swap(a,b);
	ll x=a-b,y=gcd(a,b);
	x/=y;
	ll mn=b;
	for(int i=2;i*i<=x;i++)
		if(x%i==0){
			ll num=i*y;
			mn=min(mn,b%num);
			while(x%i==0) x/=i;
		}
	if(x>1){
		ll num=x*y;
		mn=min(mn,b%num);
	}
//	cout<<"qwq "<<a<<' '<<b<<' '<<mn<<'\n';
	return mn/y+calc(a-mn,b-mn);
}

int main(){
	cin.tie(0); ios::sync_with_stdio(false);
	
	cin>>a>>b;
	cout<<calc(a,b);
	
	return 0;
} 

回复

0 条回复,欢迎继续交流。

正在加载回复...