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

版权声明:本文为博主原创,未经博主允许不得转载。转载请附上原文链接。 https://blog.csdn.net/qq_38341682/article/details/88581930

题目描述

设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;
}

猜你喜欢

转载自blog.csdn.net/qq_38341682/article/details/88581930