【Codeforces】【速】Codeforces Round #615 (Div. 3) C.D

C. Product of Three Numbers

题目分析:问一个数能不能分解成三个不相同数的乘积
题解:赛后过题,太真实了,少一个sqrt()减少时间,这题暴力就能过了

#include<iostream>
#include<cstdio>
#include<cmath> 
using namespace std;
 
int main(){
	int o;
	cin>>o;
	while(o--){
		int n;
		cin>>n;
		int a[10];
		int ans=0;
		int sans=1;
		for(int i=2;i<=sqrt(n);i++){
			if(n%i==0){
				a[ans]=i;
				n/=i;
				ans++;
			}
			if(ans==2){
				if(n>i)
					a[2]=n;
				else
					sans=0;
				break;
			}
		}
		if(sans==1&&ans==2)
			printf("YES\n%d %d %d\n",a[0],a[1],a[2]);
		else
			printf("NO\n");
	}
	return 0;
}

D. MEX maximizing

题意:这题是假定给你q,x,并且给你一串数字,这些数字可以转换为任意的±kx,问你这个数组的不属于数组的最小非负整数是多少?
题目分析:暴力了一发,卡在样例27了,我想了一下是不是要加上前缀和,不过好像差不多,看了看别人的题解是相反的思路,不能直接统计算有多少个数字,而是直接利用数组存数字,直接计算,的确是水题,重点在不能每次重新统计,不然会超时。

#include<iostream>
#include<cstdio>
using namespace std;

int a;
int b[2000000];

int main(){
	int o,k;
	cin>>o>>k;
	int t=0;
	for(int i=0;i<o;i++){
		scanf("%d",&a);
		b[a%k]++;
		while(b[t%k]>0){
			b[t%k]--;
			t++;
		}
		printf("%d\n",t);
	}
	return 0;
}

有时间考虑一下填之前的坑,这组题的EF和之前那场的C,还有看看要不要学C#,最近过年期间,事情比较多,要尽量赶上进度

猜你喜欢

转载自blog.csdn.net/weixin_43164778/article/details/104079920