枚举是尊嘟很暴力——奥数篇

还是枚举,因为基础不怎么扎实,就多写一点博客激励自己。

这种的话,你受益,我也收益,双赢的局面。

题目描述:

赵火华同学上课的时候遇到了一道《史诗级》奥数难题:

□□□+□□□=□□□,将1~9的数字分别填入□中,每个数字只能用一次。

赵火华第一个想到的就是枚举,但是脑子晕的厉害,就想到了电脑c++比他的脑壳够用多了,于是便开始了编程,看一下一共有多少个组合。

输入格式:

输出格式:

有多少个组能成立的组合(这里不透露,自己使用代码运行即可)

样例输入:

范围:

直接上这恶心的代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
	long long a,b,c,d,e,f,g,h,i,s=0;
	for(a=1;a<=9;a++)
		for(b=1;b<=9;b++)
			for(c=1;c<=9;c++)
				for(d=1;d<=9;d++)
					for(e=1;e<=9;e++)
						for(f=1;f<=9;f++)
							for(g=1;g<=9;g++)
								for(h=1;h<=9;h++)
									for(i=1;i<=9;i++)
										if(a!=b&&a!=c&&a!=d&&a!=e&&a!=f&&a!=g&&a!=h&&a!=i&&
										b!=c&&b!=d&&b!=e&&b!=f&&b!=g&&b!=h&&b!=i
										&&c!=d&&c!=e&&c!=f&&c!=g&&c!=h&&c!=i
										&&d!=e&&d!=f&&d!=g&&d!=h&&d!=i
										&&e!=f&&e!=g&&e!=h&&e!=i
										&&f!=g&&f!=h&&f!=i
										&&g!=h&&g!=i
										&&h!=i&&(100*a+10*b+c)+(100*d+10*e+f)==(100*g+10*h+i)) s++;
	cout<<s/2;
	return 0;
}

等等!你知道这里s为什么要除以2吗?

因为例:173+286=456和286+173=456是同一种组合,因此要除以2。

最终答案是168,你可以去改一下代码打表看正不正确。

  • 9
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值