函数返回值飘逸的问题
查看原帖
函数返回值飘逸的问题
366338
fjy666楼主2022/1/10 19:46
// created time : 2022-01-10 18:28:24
// writer : fjy
#include <bits/stdc++.h>
#define _rep(i_,a_,b_) for(int i_ = a_;i_ <= b_;++i_)
#define int long long
int in(void) { int x; scanf("%lld",&x); return x; }
typedef long long ll;
using namespace std;
void exgcd(ll a,int b,int &x,int &y) {
	if(!b) { x = 1; y = 0; }
	else { exgcd(b,a%b,y,x); y -= (a / b) * x; }
} 
int inverse(int x,int P) {
	//calc ax = 1(mod P)
	//ax + bP = 1
	int a,b; exgcd(x,P,a,b);
	a = (a % P + P) % P;
}
const int kN = 15;
int a[kN],b[kN],n = in();
signed main() {
	_rep(i,1,n) b[i] = in(),a[i] = in();
	ll B = 1; _rep(i,1,n) B *= b[i]; 
	ll ans = 0;
	_rep(i,1,n) {
		ll Mi = B / b[i],Ti = inverse(Mi,b[i]);
		ans = (ans + a[i] * Mi * Ti) % B; 
	}
	printf("%lld\n",ans);
	return 0;
}

这份代码过了。
在其他网站上提交,错错错。
是不是看不出什么问题?
在 inverse 函数中 a 是没有被返回的。
可我想让它返回 a。
可是,它居然真的返回了 a。
什么情况?这是什么 feature?

2022/1/10 19:46
加载中...