为什么我感觉自己代码纯纯瞎搞但有100pts。
//#pragma GCC optimize(3,"Ofast","inline")
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll T, k, a[100010], x, zq;
bool p;
inline ll read(){
ll x = 0, m = 1;
char ch = getchar();
while(!isdigit(ch)){
if(ch == '-') m = -1;
ch = getchar();
}
while(isdigit(ch)){
x = x * 10 + ch - 48;
ch = getchar();
}
return x * m;
}
inline void write(ll x){
if(x < 0){
putchar('-');
write(-x);
return;
}
if(x >= 10) write(x / 10);
putchar(x % 10 + '0');
}
signed main(){
T = read();
while(T --){
a[1] = read(), a[2] = read(), k = read();
if(k < 3){
write(a[k]),putchar('\n');
continue;
}
for(int i = 3; i <= k; ++ i){
if((a[i - 1] + a[i - 2]) % 2){
a[i] = a[i - 1] / __gcd(a[i - 1], a[i - 2]) * a[i - 2];
}else{
a[i] = __gcd(a[i - 1], a[i - 2]);
}
if(i == k){
write(a[k]),putchar('\n');
goto p1;
}
p = true;
for(int j = 2; j < i; ++ j){
if(a[j - 1] == a[i - 1] && a[j] == a[i]){
x = j - 2, zq = i - j;
p = false;
break;
}
}
if(!p){
write(a[((k - x) % zq == 0) ? (x + 1 + zq) : ((k - x) % zq)]),putchar('\n');
break;
}
}
p1:continue;
}
return 0;
}
问一下路过的奆老这样是不是正解,不是的话请求一下源码QAQ