CF round 947 A+B题

A. Bazoka and Mocha's Array

总体是要求是上升或者水平的走的,可以允许有一个断点,那就设置为flag,如果flag大于1了,那就组不了,NO。不然就可以

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
	int T;cin>>T;
	while(T--)
	{
		int n,flag=0;cin>>n;int v[n+1];
		for(int i=1;i<=n;i++)
		{
			cin>>v[i];if(i>1)
			{
				if(v[i]<v[i-1])
				{
					flag++;
				}
			}
		
		}
			if(flag==1){
				if(v[1]>=v[n]) cout<<"YES"<<endl;
				else cout<<"NO"<<endl;
			} 
			else if(flag==0) cout<<"YES"<<endl;
			else cout<<"NO"<<endl;
	}

	return 0;
}

B. 378QAQ and Mocha's Array

其实就是从小到大找最小的两个数,但是倒数第二小的数因数不能是倒数第一的那个数,然后最后遍历数组,要求两个都起码有一个能成为因子。这题有点卡在第三样例的,原来是mini设置的太小了,以后看来都得设置超级大,1000000000这种无敌大数。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
	int T;cin>>T;
	while(T--){
		ll n,flag=0;ll mini,mini2=1000000000;cin>>n;ll v[n+1];
        v[0]=0;
		for(ll i=1;i<=n;i++)
		{
            
			cin>>v[i];
            if(i==1) {mini=v[i];continue;}
			mini=min(mini,v[i]);
		}
		for(ll i=1;i<=n;i++)
		{
            if(v[i]!=mini)
			{
				if(v[i]%mini==0) continue;
				mini2=min(v[i],mini2);
			}		
		}
		for(ll i=1;i<=n;i++){
			if(v[i]%mini!=0&&v[i]%mini2!=0)
			{
			flag=1;
			}
		}if(flag)cout<<"No"<<endl;
        else cout<<"Yes"<<endl;
	}

	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值