求卡常
  • 板块学术版
  • 楼主cly312
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/9/28 21:04
  • 上次更新2024/9/28 21:32:38
查看原帖
求卡常
437243
cly312楼主2024/9/28 21:04

https://oier.team/record/66f7fe4be984d98894c1556a

跑了3001ms,MX是多跑100ms的。

这题

#include<bits/stdc++.h>
#define int long long
#define getchar getchar_unlocked
using namespace std;
template<typename T1>
void read(T1 &x){
    char c;
    c=getchar();
    bool flag=1;
    while(c<'0'){
        if(c=='-') flag=0;
        c=getchar();
    }
    x=0;
    while(c>='0'){
        x=x*10+c-'0';
        c=getchar();
    }
}
void solve() {
	int n,m;
	read(n);read(m);
	int bs=n,ans=0;
	if(m%n!=0){
		puts("-1");
		return;
	}
	if(n==1&&m!=1){
		puts("-1");
		return;
	}
	if(n==m) {
		puts("0");
		return;
	}
	while(true){
		int ob=bs;
		bs=gcd(bs*bs,m);
		++ans;
		if(bs%m==0) {
			break;
		}
		if(ob==bs) {
			ans=-1;
			break;
		}
	}
	printf("%d\n",ans);
}
signed main() {
	int t;
	read(t);
	while(t--) {
		solve();
	}
	return 0;
}
2024/9/28 21:04
加载中...