题解:P11637 Mod

· · 题解

题解:P11637 Mod

题目传送门

思路

一种比较简单的方法。

根据题意,我们可以发现在若干次操作后 a 能变成 0 的情况下,操作次数为 p-a。因为 b 的操作次数与 a 相同,所以 b 的值为 b-(p-a)。因为题面中要求 b 为一个自然数,所以自然就分成了 b-(p-a) \ge 0b-(p-a) < 0 两种情况。在第二种情况下,如果进行操作,就与题面中的 b \ge 0 相悖,所以无需进行任何操作,ab 本身即为他们的最小值。对应地,在第一种情况下,a 的最小值即为 0。当经过 p-a 次操作下后,再每进行 p 次操作后 a 会再次等于 0。所以可以求出此时 b 的最小值。

综上所述:

对于一种情况 b-(p-a) \ge 0 和第二种情况 b-(p-a) < 0 的样例模拟:

代码实现

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll a,b,p;
int main(){
    cin>>a>>b>>p;
    if((b-(p-a))>0||(b-(p-a))==0) cout<<"0"<<" "<<(b-(p-a))%p;
    else cout<<a<<" "<<b;
    return 0;
}