疑惑
查看原帖
疑惑
388651
5k_sync_closer楼主2023/3/30 11:07

所以 scanf 到底可不可以读 __int128 啊……貌似只要读的数在 long long 范围内就可以?

#include <cstdio>
__int128 l, m, M, x, y;
__int128 P(__int128 x, __int128 y) {__int128 q = 1;
	for(;y;y >>= 1, x = x * x % M) if(y & 1) q = q * x % M;return q;}
void G(__int128 a, __int128 b, __int128 &x, __int128 &y)
	{if(!b) return (void)(x = 1, y = 0);G(b, a % b, y, x);y -= a / b * x;}
int main()
{
	scanf("%lld%lld%lld", &M, &m, &l);++M;G(P(2, m), M, x, y);
	printf("%lld\n", l * (x < 0 ? x + M : x) % M);return 0;
}
2023/3/30 11:07
加载中...