题解:P2613 【模板】有理数取余
MatrixGroup · · 题解
算法介绍
有理数取余是因为整数取模不能做除法而打上的一个补丁。
对于正整数
可以证明,有理数取模就可以加减乘除,其中除要满足除数与
根据题意,给定
正确性证明
这里主要来证一下
复杂度因为
代码实现
本题还要求若 Angry!,此时对应了方程无解(除以零)的情况,因此找不到的时候输出即可。
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=19260817;
ll getint()
{
char c=getchar();
while(!isdigit(c)) c=getchar();
ll ans=0;
while(isdigit(c))
{
ans=(ans<<1)+(ans<<3)+c-'0';
ans%=mod;
c=getchar();
}
return ans;
}
int main()
{
ll a=getint();
ll b=getint();
for(int i=0;i<mod;++i)
{
if(i*b%mod==a)
{
printf("%d\n",i);
return 0;
}
}
printf("Angry!\n");
return 0;
}