一个关于类欧几里得函数出口的问题
  • 板块学术版
  • 楼主czy0323
  • 当前回复9
  • 已保存回复9
  • 发布时间2023/4/4 19:08
  • 上次更新2023/10/23 19:27:14
查看原帖
一个关于类欧几里得函数出口的问题
538427
czy0323楼主2023/4/4 19:08

证明的理解和自己推导都已经完成了,但是有一个疑问还在蒟蒻的心里没想明白——为什么在a==0的时候return?

代码:

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

inline int f(int a,int b,int c,int n){
	if( a==0 )
		return b/c;
	if( a>=c || b>=c )
		return	(n+1)*n/2*(a/c)+(n+1)*(b/c)+f(a%c,b%c,c,n);
	int m=(a*n+b)/c;
	return n*m-f(c,c-b-1,a,m-1);
}

signed main(){
	ios::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);
	int p,q;
	cin>>p>>q;
	cout<<f(q,0,p,(p-1)/2)+f(p,0,q,(q-1)/2);
	return 0;
}
2023/4/4 19:08
加载中...