当前位置:网站首页>2022.8.9 Remainder of Exam Balance--1000 Question Solutions

2022.8.9 Remainder of Exam Balance--1000 Question Solutions

2022-08-10 03:20:00 bj_hacker

2022.8.9The remainder of the exam balance--1000题解

题目

1、Balanced remainder–1000
时间限制: | 空间限制:
题目描述:
给出一个正整数 ( 能被3整除)和一个大小为 的整数数组 .
在一次操作中,You can choose either one and let it increase1.You can do this multiple times on the same number
作.
The minimum number of steps required to request(可以是0次),使 中模3余 are equal in number.共 组测试数据.
输入格式:
第一行仅有一个正整数 ( ),表示测试数据的组数.
接下来有 组测试数据,There are two lines in each group:
The first line contains only one positive integer ( , 能被3整除,且所有测试数据中 之和不超过
),表示数组大小;
第二行有 个整数 ( )用空格隔开.
输出格式:
对于每组测试数据,输出一行一个整数,Indicates how many operations to use at least 符合条件.

思路

余数为0 1 2The conduction forms a ring,So you only need to judge the relationship with the average once,Conduction can.

代码实现

#include<bits/stdc++.h>
using namespace std;

int t,n,ans;
int cnt[3];
int main(){
    
	scanf("%d",&t);
	while(t--){
    
		ans=0;
		memset(cnt,0,sizeof(cnt));
		scanf("%d",&n);
		for(int i=1;i<=n;i++){
    
			int a;
			scanf("%d",&a);
			cnt[a%3]++;
		} 
		int op=n/3;
		if(cnt[0]>op){
    
			int s=cnt[0]-op;
			ans+=s;
			cnt[0]=n/3;
			cnt[1]+=s;
		}
		else if(cnt[0]<op){
    
			int s=op-cnt[0];
			ans+=s;
			cnt[2]-=s;
			cnt[0]=n/3;
		}
		if(cnt[2]>op){
    
			int s=cnt[2]-op;
			ans+=s;
			cnt[0]+=s;
			cnt[2]=n/3;
		}
		else if(cnt[2]<op){
    
			int s=op-cnt[2];
			ans+=s;
			cnt[2]=n/3;
			cnt[1]-=s;
		}
		if(cnt[1]>op){
    
			int s=cnt[1]-op;
			ans+=s;
			cnt[1]=n/3;
			cnt[2]+=s;
		}
		else if(cnt[1]<op){
    
			int s=op-cnt[1];
			ans+=s;
			cnt[1]=n/3;
			cnt[0]-=s;
		}
		printf("%d\n",ans);
	}
	return 0;
}
原网站

版权声明
本文为[bj_hacker]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/222/202208100155182251.html