社区讨论
求助
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 条回复,欢迎继续交流。
正在加载回复...