1 条题解

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

    给定两个正整数a,b, 找到所有正整数 n 满足 ab  (mod  n)a \equiv b~~(mod~~n).

    令x = |a - b|, 则有x0  (mod  n)x\equiv 0~~(mod~~n), 亦即nxn | x. 找出 x 的所有因子输出即可. Θ(w)\Theta(\sqrt w), 其中w为数的范围(10910^9).

    #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 a, b; cin >> a >> b;
    	set<int> s = sep(abs(a - b));
    	for (auto x : s) cout << x << " ";
    	cout << "\n";
    }
    
    int main()
    {
    	int T = 1; cin >> T;
    	while (T--) solve();	
    	return 0;
    }
    
    
    • 1

    信息

    ID
    248
    时间
    1000ms
    内存
    256MiB
    难度
    7
    标签
    (无)
    递交数
    142
    已通过
    29
    上传者