cf #748 (Div. 3) ABCD

cf #748 (Div. 3) ABCD,第1张

cf #748 (Div. 3) A/B/C/D A. Elections

传送门

题目描述

输入描述

输出描述

输入样例

5
0 0 0
10 75 15
13 13 17
1000 0 0
0 1000000000 0

输出样例

1 1 1
66 0 61
5 5 0
0 1001 1001
1000000001 0 1000000001

有手就行签到题,特判同分情况即可。

参考代码

#include 
using namespace std;

typedef long long ll;

int main(){
	int t;
	cin>>t;
	while(t--){
		ll a,b,c;
		cin>>a>>b>>c;
		ll maxx;
		maxx=max(a,b);
		maxx=max(maxx,c);
		if(a==maxx&&b!=maxx&&c!=maxx)
			cout<<"0"<<" ";
		else
			cout< 
B. Make it Divisible by 25 

传送门

题目描述

输入描述

输出描述

输入样例

5
100
71345
3259
50555
2050047

输出样例

0
3
1
3
2

样例描述


显然对于 25 的倍数,尾数一定是 00、25、50、75 ,因此只需从低位向高位暴力判断,最少需要删几位才能构成符合要求的尾数。

参考代码

#include 
using namespace std;

typedef long long ll;

int main(){
	int t;
	cin>>t;
	while(t--){
		int flag=0;
		int x=0,y=0;
		ll a;
		cin>>a;
		ll c=a;
		while(c){
			int b=c%10;
			if(flag==1&&(b==5||b==0))
				break;
			if(flag==0&&b==0){
				flag=1;
				x--;
			}
			x++;
			c/=10;
		}
		flag=0;
		while(a){
			int b=a%10;
			if(flag==1&&(b==2||b==7))
				break;
			if(flag==0&&b==5){
				flag=1;
				y--;
			}
			y++;
			a/=10;
		}
		int minn=min(x,y);
		cout< 
C. Save More Mice 

传送门

题目描述

输入描述

输出描述

输入样例

3
10 6
8 7 5 4 9 4
2 8
1 1 1 1 1 1 1 1
12 11
1 2 3 4 5 6 7 8 9 10 11

输出样例

3
1
4

贪心把所有离洞口最近的老鼠逐个移动即可,其中可以移动的次数为 n - 1 次,累加每只老鼠到洞口的距离,不超过可移动次数时可以进洞的老鼠数量即为答案。

参考代码

#include 
using namespace std;

typedef long long ll;

int main(){
	int t;
	cin>>t;
	while(t--){
		int n,k;
		cin>>n>>k;
		int a[k+10];
		for(int i=1;i<=k;i++)
			cin>>a[i];
		sort(a+1,a+k+1);
		ll sum=0;
		int ans=0;
		for(int i=k;i>=1;i--){
			sum+=n-a[i];
			ans++;
			if(sum>n-1){
				ans--;
				break;
			}
		}
		cout< 
D1. All are Same 

题目描述

输入描述

输出描述

输入样例

3
6
1 5 3 1 1 5
8
-1 0 1 -1 0 1 -1 0
4
100 -1000 -1000 -1000

输出样例

2
1
1100

令所有数相同,即所有数都减到该数组中的最小值即可。k 即为所有差值的最大公因数,注意数组中所有数字相同时的特判。

参考代码

#include 
using namespace std;
typedef long long ll;

ll gcd(ll a,ll b)
{
    while(b){
        ll t = b;
        b = a%b;
        a = t;
    }
    return a;
} 


int main(){
	int t;
	cin>>t;
	while(t--){
		int n;
		cin>>n;
		ll cha;
		int a[n+10];
		for(int i=1;i<=n;i++)
			cin>>a[i];
		sort(a+1,a+n+1);
		int minn=a[1];
		int flag=0;
		ll ans;
		for(int i=1;i<=n;i++){
			if(a[i]==minn)
				continue;
			if(flag==0){
				ans=a[i]-minn;
				flag=1;
				continue;
			}
			if(flag==1){
				cha=a[i]-minn;
				if(cha%ans==0)
					continue;
				else{
					ans=gcd(ans,cha);
				}
			}
		}
		if(flag==0)
			cout<<"-1"<
						

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/3970946.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-10-21
下一篇 2022-10-21

发表评论

登录后才能评论

评论列表(0条)

保存