https://www.luogu.org/problem/show?pid=1008
题目背景
本题为提交答案题,您可以写程序或手算在本机上算出答案后,直接提交答案文本,也可提交答案生成程序。
题目描述
将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数构成1:2:3的比例,试求出所有满足条件的三个三位数。
输入输出格式
输入格式:
木有输入
输出格式:
若干行,每行3个数字。按照每行第一个数字升序排列。
输入输出样例
输入样例#1:
输出样例#1:
192 384 576
…
(输出被和谐了)
简单的模拟,暴力破解
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a,b,c,d,e,f,g,h,i,s1,s2,s3;
for(a=1;a<=9;a++)
for(b=1;b<=9;b++)
if(b!=a)
for(c=1;c<=9;c++)
if(c!=b&&c!=a)
for(d=1;d<=9;d++)
if(d!=c&&d!=b&&d!=a)
for(e=1;e<=9;e++)
if(e!=d&&e!=c&&e!=b&&e!=a)
for(f=1;f<=9;f++)
if(f!=e&&f!=d&&f!=c&&f!=b&&f!=a)
for(g=1;g<=9;g++)
if(g!=f&&g!=e&&g!=d&&g!=c&&g!=b&&g!=a)
for(h=1;h<=9;h++)
if(h!=g&&h!=f&&h!=e&&h!=d&&h!=c&&h!=b&&h!=a)
for(i=1;i<=9;i++)
{
if(i!=h&&i!=g&&i!=f&&i!=e&&i!=d&&i!=c&&i!=b&&i!=a)
{
s1=a*100+b*10+c,s2=d*100+e*10+f,s3=g*100+h*10+i;
if(s3==3*s1&&s2==2*s1)
cout<<s1<<" "<<s2<<" "<<s3<<endl;
}
}
}
比较简单的解题思路,代码较少。
#include<bits/stdc++.h>
using namespace std;
int c[10];
int main()
{
int a,b,d,v;
for(a=123;a<=329;a++)
{
b=2*a;d=3*a;
memset(c,0,sizeof(c));//把数组c置0
c[a%10]=c[a/10%10]=c[a/100]=c[b%10]=c[b/10%10]=c[b/100]=c[d%10]=c[d/10%10]=c[d/100]=1;//统计数是否1~9全部用完
v=0;
for(int j=1;j<=9;j++)
v+=c[j];
if(v==9)
cout<<a<<" "<<b<<" "<<d<<endl;
}
return 0;
}