1 条题解

  • 0
    @ 2026-6-23 19:06:17

    逆天乱搞题,又称暴力缝合怪,根号分治了解一下。

    #include<bits/stdc++.h>
    using namespace std;
    #define int long long
    const int B=1e5;
    void solve()
    {
    	int a,b,ans=1e9;cin>>a>>b;
    	if(a<=B)
    		for(int i=0;i<=B;i++)
    			if(b%(a+i))ans=min(ans,a+i*2-b%(a+i));
    			else ans=min(ans,i);
    	else for(int k=1;k<=B;k++)
    	{
    		if(k*a<b)
    		{
    			int x=ceil(1.0*(b-k*a)/k);
    			ans=min(ans,k*(a+x)-b+x);
    		}
    		else ans=min(ans,k*a-b);
    	}
    	cout<<ans<<'\n';
    }
    signed main()
    {
    	int t;cin>>t;
    	while(t--)solve();
    	return 0;
    }
    • 1

    信息

    ID
    1150
    时间
    2000ms
    内存
    1024MiB
    难度
    9
    标签
    递交数
    14
    已通过
    4
    上传者