P1008 三连击

来源:互联网 发布:淘宝服装特效处理 编辑:程序博客网 时间:2024/06/10 04:52

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