CF 1150C Prefix Sum Primes

1150C

听了学长的讲解才写出来的,也看了一些其他的博客,有的有点麻烦,有的和本文的思路一样

注意:
1不是质数
除了2以外没有任何的质数是偶数,所以,在一个质数后面再加一个奇数,它一定不是质数

如果数组里全是1或者2,直接输出就行了,其他情况,只需要先输出一个“2 1”(因为2是唯一一个偶数的质数,接着3也是质数),然后再输出剩下的2(质数加上偶数才可能是奇数),最后再输出剩下的1就可以了

#include<bits/stdc++.h>
using namespace std;
int s[200050];
int main()
{
    
    
	int i,j,k,t,a,b,ta,tb;
	while(cin>>t)
	{
    
    
		a=0,b=0;
		for(i=0;i<t;i++){
    
    
			cin>>s[i];
			if(s[i]==1)a++;//记录1和2的数量 
			else if(s[i]==2)b++;
		}
		if(!(a&&b)){
    
    //如果两个有一个为0 
			for(i=0;i<t;i++){
    
    
				if(i==0)cout<<s[i];
				else cout<<" "<<s[i];
			}
		}
		else{
    
    //至少有一个1和2 
			cout<<"2 1";
			for(i=0;i<b-1;i++)cout<<" 2";
			for(i=0;i<a-1;i++)cout<<" 1";
		}
		cout<<endl;
	}
}

猜你喜欢

转载自blog.csdn.net/Dueser/article/details/105017262
今日推荐