三连击(升级版)--洛谷

P1618–三连击(升级版)
题目描述
将 1,2,…,9 共 9 个数分成三组,分别组成三个三位数,且使这三个三位数的比例是 A:B:C,试求出所有满足条件的三个三位数,若无解,输出 No!!!
//感谢黄小U饮品完善题意
输入格式
三个数,A,B,C。
输出格式
若干行,每行 3个数字。按照每行第一个数字升序排列。

输入输出样例:
输入#1:

1 2 3

输出#1

192 384 576
219 438 657
273 546 819
327 654 981

暴力出奇迹,简单粗暴。

#include <iostream>
using namespace std;
int zxgb(int x,int y,int z)
{
 int i;
 for(i=x;;i++)
 {
  if(i<y||i<z)
  continue;
  if(i%x==0&&i%y==0&&i%z==0)
  return i;
 }
}
int main()
{
 int d1,d2,d3,d4,d5,d6,d7,d8,d9,ans,sum=0,a,b,c,n;
 cin>>a>>b>>c;
 n=zxgb(a,b,c);
 for(d1=1;d1<=9;d1++)
 {
  for(d2=1;d2<=9;d2++)
  {
   if(d2==d1)
   continue; 
   for(d3=1;d3<=9;d3++)
   {
    if(d3==d1||d3==d2)
    continue;
    for(d4=1;d4<=9;d4++)
    {
     if(d4==d1||d4==d2||d4==d3)
     continue;
     for(d5=1;d5<=9;d5++)
     {
      if(d5==d1||d5==d2||d5==d3||d5==d4)
      continue;
      for(d6=1;d6<=9;d6++)
      {
        if(d6==d1||d6==d2||d6==d3||d6==d4||d6==d5)
        continue;
       for(d7=1;d7<=9;d7++)
       {
        if(d7==d1||d7==d2||d7==d3||d7==d4||d7==d5||d7==d6)
        continue;
        for(d8=1;d8<=9;d8++)
        {
         if(d8==d1||d8==d2||d8==d3||d8==d4||d8==d5||d8==d6||d8==d7)
         continue;
         for(d9=1;d9<=9;d9++)
         {
          if(d9==d1||d9==d2||d9==d3||d9==d4||d9==d5||d9==d6||d9==d7||d9==d8)
          continue;
          if((d1*100+d2*10+d3)*(n/a)==(d4*100+d5*10+d6)*(n/b)&&(d4*100+d5*10+d6)*(n/b)==(d7*100+d8*10+d9)*(n/c))
          {
           cout<<d1*100+d2*10+d3<<" "<<d4*100+d5*10+d6<<" "<<d7*100+d8*10+d9<<endl;
           sum++;
          }
         }
        }
       }
      }
     }
    }
   }
  }
 }
 if(sum==0)
 cout<<"No!!!";
 return 0;
}
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值