求问时间复杂度
查看原帖
求问时间复杂度
1072502
Zskioaert1106楼主2024/9/15 19:16

rt,50 分

#include<bits/stdc++.h>
using namespace std;
long long t,n,m;
unordered_map<long long,bool>p;
bool f(__int128_t x){
	if(x==0)return 0;
	if(x<0)return 1;
	if(p.count((long long)x))return p[(long long)x];
	for(__int128_t i=x/n*n;i>=n;i--){
		if(!f(x-i)){
			p[(long long)x]=1;
			return 1;
		}
	}
	for(__int128_t i=(__int128_t)sqrt(n);i>=1;i--){
		if(!f(x-i*i)){
			p[(long long)x]=1;
			return 1;
		}
	}
	p[(long long)x]=0;
	return 0;
}
int main(){
	cin>>t>>n;
	while(t--){
		cin>>m;
		putchar(f(__int128_t(m))?'F':'B');
	}
	return 0;
}
2024/9/15 19:16
加载中...