清华大学考研复试机试:abc

本文通过分析一个具体的数学问题,即寻找满足特定条件的三位数组合,展示了如何使用编程技巧来解决复杂的数字谜题。通过对题目条件的深入理解,文章提出了一种优化的遍历策略,大大减少了不必要的计算,从而高效地找到了所有可能的解决方案。

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

题目描述

设a、b、c均是0到9之间的数字,abc、bcc是两个三位数,且有:abc+bcc=532。求满足条件的所有a、b、c的值。

输入描述

题目没有任何输入。

输出描述

请输出所有满足题目条件的a、b、c的值。
a、b、c之间用空格隔开。
每个输出占一行。

分析

水题,直接遍历暴力求解即可,三层for循环。不过也有一些优化的点,可能优化效果对于这道题不是很明显,但是当数据量很大时,这些对于数字的优化方法可能就很有效。

首先题目说是两个三位数,于是a和b均不为0。其次,两个数的个位数是相同的,且和的个位数为2,也就是说c只能是1或者6。这样经过优化,实际上就相当于只有两层循环,因为c只能取两个数。

AC代码如下:

#include<iostream>

using namespace std;

int main(void)
{
	int a, b, c;
	int num1, num2;
	for(int i = 1; i < 10; ++i)
	{
		for(int j = 1; j < 10; ++j)
		{
			for(int k = 1; k < 7; k = k + 5)//只能取两个数
			{
				a = i;
				b = j;
				c = k;
				num1 = 100*a + 10*b + c;
				num2 = 100*b + 11*c;
				if(num1 + num2 == 532)
				{
					cout << a << " " << b << " " << c << endl;
				}
			}
		}
	}
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值