TLE 63在线等!
查看原帖
TLE 63在线等!
1645145
JakeJaHu楼主2025/1/20 17:34

很神奇的爆了#2,#3,#4,#5和#12

十万火急,在线等!!!

#include <cstdio>
#include <algorithm>
using namespace std;
int n;
bool prime[1000005],IsOneIn;
struct cow{
	int id,val;
}paper[114514];
struct ans{
	int id,cnt;
}factor[114514];
int cmp1(cow a,cow b){
	return a.val>b.val;
}
int cmp2(ans a,ans b){
	return a.id<b.id;
}
int main(){
	scanf("%d",&n);
	for(int i=1;i*i<=1000000;i++){
		for(int j=i*i;j<=1000000;j+=i){
			prime[j]=true;
		}
	}
	for(int i=1;i<=n;i++){
		scanf("%d",&paper[i].val);
		paper[i].id=i;
		if(paper[i].val==1) IsOneIn=true;
	}
	sort(paper+1,paper+1+n,cmp1);
	for(int i=1;i<=n;i++){
		factor[i].id=paper[i].id;
		if(paper[i].val==paper[i-1].val){
			factor[i].cnt=factor[i-1].cnt;
			continue;
		}
		if(prime[paper[i].val]==false){
			if(paper[i].val==1 || IsOneIn==false) factor[i].cnt=0;
			else{
				int k=i+1;
				while(paper[k].val==paper[i].val){
					k++;
					factor[i].cnt++;
				}
			}
		}else{
			for(int j=i+1;j<=n;j++){
				if(paper[i].val%paper[j].val==0) factor[i].cnt++;
			}
		}
	}
	sort(factor+1,factor+1+n,cmp2);
	for(int i=1;i<=n;i++){
		printf("%d\n",factor[i].cnt);
	}
	return 0;
}
2025/1/20 17:34
加载中...