1 条题解

  • 0
    @ 2024-11-27 14:01:59

    给定(ai,bi) i[1,k](a_i,b_i)~i\in[1,k], 找到所有n满足aibi  (mod  n)a_i\equiv b_i~~(mod~~n).

    xi=aibix_i=|a_i-b_i|, 有nxin|x_i, 所以有ngcd(X)n|gcd(X), 其中X={x1,x2,...,xk}X=\{x_1,x_2,...,x_k\}. 求得最大公约数后再分解因子, Θ(klogww)\Theta(klogw\sqrt w).

    #include <bits/stdc++.h>
    using namespace std;
    
    set<int> sep(int x)
    {
    	set<int> s;
    	for (int i = 1; i <= x / i; i++)
    	{
    		if (x % i == 0)
    		{
    			s.insert(i);
    			s.insert(x / i);
    		}
    	}
    	return s;
    }
    
    void solve()
    {
    	int k; cin >> k;
    	int x, y; cin >> x >> y;
    	int g = __gcd(x, y);
    	while (--k)
    	{
    		cin >> x >> y;
    		g = __gcd(g, x);
    		g = __gcd(g, y);
    	}
    	set<int> s = sep(g);
    	for (int x : s) cout << x << " ";
    	cout << "\n";
    }
    
    int main()
    {
    	int T = 1; // cin >> T;
    	while (T--) solve();	
    	return 0;
    }
    
    
    • 1

    信息

    ID
    249
    时间
    1000ms
    内存
    256MiB
    难度
    6
    标签
    (无)
    递交数
    66
    已通过
    19
    上传者