histcat

histcat

大數翻倍法求(拓展)中國剩餘定理

暴力#

暴力合併每個數和另一個數,算一下要加上多少才能符合。

看著時間複雜度很迷惑,實際上模板題跑的還是很快的。

不過可能又被卡的風險,據 zhx 說 n 越小越容易卡,不過頂多卡一點(

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

void Merge(int &b1, int &a1, int b2, int a2)
{
	if(a1 < a2) swap(b1, b2), swap(a1, a2);
	while(b1 % a2 != b2)
	{
		b1 += a1;
	}
	a1 = a1 / __gcd(a1, a2) * a2;
}
//a為模數,b為餘數 
signed main()
{
	ios::sync_with_stdio(0), cin.tie(0);

	int bstar = 0, astar = 1;
	int b, a;
	cin >> n;
	for(int i = 1;i <= n;i++)
	{
		cin >> a >> b;
		b%= a;
		Merge(bstar, astar, b, a);
	}

	printf("%lld", bstar);
	return 0;
}
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。