【C语言题目】循环-数字

博客提出一个算法问题,给定6个范围在0 - 9的数字,可将任意个数字换成0 - 9的其他数字,求最少改变数字个数使前三个数字之和等于后三个数字之和,还给出输入输出格式、样例及代码限制等信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

给出六个数字,每个数字范围为 0 ~ 9,现在你可以将其中任意个数字换成其他任意数字,范围还是 0 ~ 9,问最少需要改变多少个数字,使得前三个数字之和等于后三个数字之和。

输入格式:
第一行输入 6 个整数,每个整数范围为 0 ~ 9 。

输出格式:
最少需要改变的数字的个数。

输入样例:
在这里给出一组输入。例如:

1 2 3 4 5 6
输出样例:
在这里给出相应的输出。例如:

2
输入样例中,可将 4 和 5 改成 0 或者将 5 改成 2 ,6 改成 0。

代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

#include<stdio.h>
#include<math.h>
int main()
{
	int a[6];
	int i;
	int iszero=0;
	int isnine=0;
	int sum1=0,sum2=0;
	for(i=0;i<6;i++)
	{
		scanf("%d",&a[i]);
		if(a[i]==0)
		{
			iszero++;
		}
		if(a[i]==9)
		{
			isnine++;
		}
		if(i<=2)
		{
			sum1+=a[i];
		}
		if(i>2)
		{
			sum2+=a[i];
		}
	}
	if(sum1==sum2)
	{
		printf("0");
	}
	else if(abs(sum1-sum2)<9)
	{
		printf("1");
	}
	else if(abs(sum1-sum2)==9 && (isnine>0||iszero>0))
	{
		printf("1");
	}
	else if(abs(sum1-sum2)<18)
	{
		printf("2");
	}
	else if(abs(sum1-sum2)==18 && (iszero>1||isnine>1))
	{
		printf("2");
	}
	else if(abs(sum1-sum2)>=18)
	{
		printf("3");
	}
	
	
	
	return 0;
}```

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值