玄学时间复杂度
  • 板块学术版
  • 楼主BrokenStar
  • 当前回复11
  • 已保存回复11
  • 发布时间2022/4/10 10:33
  • 上次更新2023/10/28 04:06:56
查看原帖
玄学时间复杂度
501169
BrokenStar楼主2022/4/10 10:33

RT. RT. 蒟蒻求助

这个题

我一开始是这样写的:

#include<bits/stdc++.h>
using namespace std;
int gcd(int x,int y){
	int a;
	while(y!=0){
		a=x%y;
		x=y;
		y=a;
	}
	return x;
}
int main(){
	int sum=0;
	long long x,y,m;
	cin>>x>>y;
	m=x*y;
//	if(y<x){
//		cout<<0<<endl;
//		return 0;
//	}
	for(int i=2;i*i<=m;i++){
		if(y*x%i==0){
			if(i%x!=0||(m)/i%x!=0){
				continue;
			}
			if(gcd(i,m/i)==x){
				if(x==y){
					sum++;
				}
				else{
					sum+=2;
				}
//				cout<<i<<" "<<m/i<<endl;
			}
		}
	}
	cout<<sum<<endl;
	return 0;
}

结果TLETLE

后来,我用sqrtsqrt:

#include<bits/stdc++.h>
using namespace std;
int gcd(int x,int y){
	int a;
	while(y!=0){
		a=x%y;
		x=y;
		y=a;
	}
	return x;
}
int main(){
	int sum=0;
	long long x,y;
	cin>>x>>y;
//	if(y<x){
//		cout<<0<<endl;
//		return 0;
//	}
	for(int i=2;i<=sqrt(y*x);i++){
		if(y*x%i==0){
			if(i%x!=0||(x*y)/i%x!=0){
				continue;
			}
			if(gcd(i,x*y/i)==x){
				if(x==y){
					sum++;
				}
				else{
					sum+=2;
				}
//				cout<<i<<" "<<x*y/i<<endl;
			}
		}
	}
	cout<<sum<<endl;
	return 0;
}

ACAC

所以iii*i的时间复杂度是大于sqrtsqrt的吗?

2022/4/10 10:33
加载中...