首先a,b,d的范围大的离谱,显然不能直接读入,所以一边读入一边取模,然后注意到19260817是一个素数,显然可以用费马小定理,a^(p-1)=1(mod p).但我这里的代码是取模的线性替换
`#include<stdio.h>
include
include
include<stdlib.h>
include<string.h>
include
include
using namespace std;
const int p = 19260817;
tuple<int, int, int> P_gcd(int a, int b) {
if (b == 0) return { a,1,0 };
auto [g, x1, y1] = P_gcd(b, a % b);
int x = y1;
int y = x1 - a / b * y1;
return { g,x,y };
}
int niyuan(int a, int p) {
auto [g, x, y] = P_gcd(a, p);
if (g != 1) return -1;
if (x < 0) x += p;
return x;
}
int main() {
int a=0,b=0;
char s[10007];
cin>>s;
int len = strlen(s);
for (int i = 0;i < len;i++) {
a = a * 10 + s[i]-'0';
a %= p;
}
cin>>s;
len = strlen(s);
for (int i = 0;i < len;i++) {
b = b * 10 + s[i]-'0';
b %= p;
}
int n = niyuan(b, p);
if (n == -1) printf("Angry!");
else {
//printf("%d %d %d\n", n, a, b);
n = 1ll * n *a% p;
printf("%d", n);
}
return 0;
}`