昨天比赛T1
  • 板块学术版
  • 楼主zlttcl
  • 当前回复5
  • 已保存回复5
  • 发布时间2022/8/29 09:42
  • 上次更新2023/10/27 13:14:56
查看原帖
昨天比赛T1
555381
zlttcl楼主2022/8/29 09:42

为什么我感觉自己代码纯纯瞎搞但有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

2022/8/29 09:42
加载中...