还是枚举,因为基础不怎么扎实,就多写一点博客激励自己。
这种的话,你受益,我也收益,双赢的局面。
题目描述:
赵火华同学上课的时候遇到了一道《史诗级》奥数难题:
□□□+□□□=□□□,将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,你可以去改一下代码打表看正不正确。
标签:尊嘟,long,456,赵火华,枚举,数篇,173,286 From: https://blog.csdn.net/2301_81964906/article/details/139222168