【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#,最近过年期间,事情比较多,要尽量赶上进度