#include <cstdio>
#include <cstring>
#include <map>
#include <cmath>
#define int __int128_t
using namespace std;
map<int, int> vis;
int a, b, m;
int mod;
inline int read() {
int X=0,w=1; char c=getchar();
while (c<'0'||c>'9') { if (c=='-') w=-1; c=getchar(); }
while (c>='0'&&c<='9') X=(X<<3)+(X<<1)+c-'0',c=getchar();
return X*w;
}
inline void write(int x) {
int sta[100],top=0;
while (x) sta[++top]=x%10,x/=10;
while (top) putchar(sta[top--]+'0');
}
int mul(int a, int b)
{
return a * b % mod;
}
int qpow(int a, int b)
{
int res = 1;
while (b)
{
if (b & 1) res = mul(res, a) % mod;
a = mul(a, a) % mod;
b >>= 1;
}
return res;
}
signed main()
{
b = read(), mod = read();
m = sqrt((long long) mod) + 1;
b = mul(b, 9) + 1;
b %= mod;
a = 10;
for (int i = 0; i < m; ++ i)
{
int now = b * qpow(a, i) % mod;
vis[now] = i;
}
a = qpow(a, m);
//cout << m;
for (int i = 0; i < m; ++ i)
{
int now = qpow(a, i) % mod;
if (vis[now]) {write(((mul(i, m) - vis[now]) % mod + mod) % mod);return 0;}
}
return 0;
}```
最后4个点wa了