洛谷 P1618 三连击(升级版) 题解

测评地址https://www.luogu.org/problemnew/show/P1618
题目描述
将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数的比例是A:B:C,试求出所有满足条件的三个三位数,若无解,输出“No!!!”。

输入输出格式
输入格式:
三个数,A B C。

输出格式:
若干行,每行3个数字。按照每行第一个数字升序排列。

输入输出样例
输入样例#1:
1 2 3
输出样例#1:
192 384 576
219 438 657
273 546 819
327 654 981
说明
保证A<B<C
这次是用机(wei)智(suo)的方法AC
注意,本题解仅供娱乐
下面先上原来的代码,只是在原来的 P1008 三连击 上添加了输入。

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int s[10]={0};
int fuc(){//用于检查有没有数字重复 
    sort(s,s+9);
    int dud=0;
    for(int i=0;i<9;i++)
    {
        if(s[i]==s[i+1] or s[i]==0)return 0;//有0也不能过,题目要求1-9数字
        else dud=1;
    }
    return dud;//如果条件满足,进入if() 
}
int main()
{
    int ans[3];
    int k1,k2,k3;
    int x;
    int nans=0;
    cin>>k1>>k2>>k3;
    for(int i=100;i<=999;i++)
        for(int j=100;j<=999;j++)
            for(int k=100;k<=999;k++)
            {    
                if(k2*k3*i==k1*k3*j&&k1*k3*j==k1*k2*k)
                {    //下面三行把i,j,k每位提取出来 
                s[0]=i/100;s[1]=i/10%10;s[2]=i%10;
                s[3]=j/100;s[4]=j/10%10;s[5]=j%10;
                s[6]=k/100;s[7]=k/10%10;s[8]=k%10;
                    x=fuc();
                    if(x)
                    {
                    ans[0]=i;ans[1]=j;ans[2]=k;
                    sort(ans,ans+3);//答案升序排列 
                    printf("%d %d %d\n",ans[0],ans[1],ans[2]);//输出写入文件 
                    }
                }            
            }
    return 0;
 }

快乐地提交,发现果然超时~~~~
于是我继续P1008没有完成的打表梦
因为符合题意的答案很少,没有采用文件输出的形式,毕竟亲眼看着答案一点一点蹦出来好哇。
下面上答案生成后的结果

-----------1 1 1
No!!!
-----------1 1 2
No!!!
-----------1 1 3
No!!!
-----------1 1 4
No!!!
-----------1 1 5
No!!!
-----------1 1 6
No!!!
-----------1 1 7
No!!!
-----------1 1 8
No!!!
-----------1 1 9
No!!!
-----------1 2 2
No!!!
-----------1 2 3
192 384 576
219 438 657
273 546 819
327 654 981
-----------1 2 4
No!!!
-----------1 2 5
No!!!
-----------1 2 6
No!!!
-----------1 2 7
No!!!
-----------1 2 8
No!!!
-----------1 2 9
No!!!
-----------1 3 3
No!!!
-----------1 3 4
No!!!
-----------1 3 5
129 387 645
-----------1 3 6
No!!!
-----------1 3 7
No!!!
-----------1 3 8
No!!!
-----------1 3 9
No!!!
-----------1 4 4
No!!!
-----------1 4 5
No!!!
-----------1 4 6
No!!!
-----------1 4 7
No!!!
-----------1 4 8
No!!!
-----------1 4 9
No!!!
-----------1 5 5
No!!!
-----------1 5 6
No!!!
-----------1 5 7
No!!!
-----------1 5 8
No!!!
-----------1 5 9
No!!!
-----------1 6 6
No!!!
-----------1 6 7
No!!!
-----------1 6 8
No!!!
-----------1 6 9
No!!!
-----------1 7 7
No!!!
-----------1 7 8
No!!!
-----------1 7 9
No!!!
-----------1 8 8
No!!!
-----------1 8 9
No!!!
-----------1 9 9
No!!!
-----------2 2 2
No!!!
-----------2 2 3
No!!!
-----------2 2 4
No!!!
-----------2 2 5
No!!!
-----------2 2 6
No!!!
-----------2 2 7
No!!!
-----------2 2 8
No!!!
-----------2 2 9
No!!!
-----------2 3 3
No!!!
-----------2 3 4
No!!!
-----------2 3 5
No!!!
-----------2 3 6
No!!!
-----------2 3 7
No!!!
-----------2 3 8
No!!!
-----------2 3 9
No!!!
-----------2 4 4
No!!!
-----------2 4 5
No!!!
-----------2 4 6
192 384 576
219 438 657
273 546 819
327 654 981
-----------2 4 7
No!!!
-----------2 4 8
No!!!
-----------2 4 9
No!!!
-----------2 5 5
No!!!
-----------2 5 6
No!!!
-----------2 5 7
No!!!
-----------2 5 8
No!!!
-----------2 5 9
No!!!
-----------2 6 6
No!!!
-----------2 6 7
No!!!
-----------2 6 8
No!!!
-----------2 6 9
No!!!
-----------2 7 7
No!!!
-----------2 7 8
No!!!
-----------2 7 9
No!!!
-----------2 8 8
No!!!
-----------2 8 9
No!!!
-----------2 9 9
No!!!
-----------3 3 3
No!!!
-----------3 3 4
No!!!
-----------3 3 5
No!!!
-----------3 3 6
No!!!
-----------3 3 7
No!!!
-----------3 3 8
No!!!
-----------3 3 9
No!!!
-----------3 4 4
No!!!
-----------3 4 5
No!!!
-----------3 4 6
No!!!
-----------3 4 7
No!!!
-----------3 4 8
No!!!
-----------3 4 9
No!!!
-----------3 5 5
No!!!
-----------3 5 6
No!!!
-----------3 5 7
No!!!
-----------3 5 8
No!!!
-----------3 5 9
No!!!
-----------3 6 6
No!!!
-----------3 6 7
No!!!
-----------3 6 8
No!!!
-----------3 6 9
192 384 576
219 438 657
273 546 819
327 654 981
-----------3 7 7
No!!!
-----------3 7 8
213 497 568
321 749 856
-----------3 7 9
No!!!
-----------3 8 8
No!!!
-----------3 8 9
No!!!
-----------3 9 9
No!!!
-----------4 4 4
No!!!
-----------4 4 5
No!!!
-----------4 4 6
No!!!
-----------4 4 7
No!!!
-----------4 4 8
No!!!
-----------4 4 9
No!!!
-----------4 5 5
No!!!
-----------4 5 6
492 615 738
-----------4 5 7
No!!!
-----------4 5 8
No!!!
-----------4 5 9
No!!!
-----------4 6 6
No!!!
-----------4 6 7
No!!!
-----------4 6 8
No!!!
-----------4 6 9
No!!!
-----------4 7 7
No!!!
-----------4 7 8
No!!!
-----------4 7 9
No!!!
-----------4 8 8
No!!!
-----------4 8 9
No!!!
-----------4 9 9
No!!!
-----------5 5 5
No!!!
-----------5 5 6
No!!!
-----------5 5 7
No!!!
-----------5 5 8
No!!!
-----------5 5 9
No!!!
-----------5 6 6
No!!!
-----------5 6 7
No!!!
-----------5 6 8
No!!!
-----------5 6 9
No!!!
-----------5 7 7
No!!!
-----------5 7 8
No!!!
-----------5 7 9
No!!!
-----------5 8 8
No!!!
-----------5 8 9
No!!!
-----------5 9 9
No!!!
-----------6 6 6
No!!!
-----------6 6 7
No!!!
-----------6 6 8
No!!!
-----------6 6 9
No!!!
-----------6 7 7
No!!!
-----------6 7 8
No!!!
-----------6 7 9
No!!!
-----------6 8 8
No!!!
-----------6 8 9
No!!!
-----------6 9 9
No!!!
-----------7 7 7
No!!!
-----------7 7 8
No!!!
-----------7 7 9
No!!!
-----------7 8 8
No!!!
-----------7 8 9
No!!!
-----------7 9 9
No!!!
-----------8 8 8
No!!!
-----------8 8 9
No!!!
-----------8 9 9
No!!!
-----------9 9 9
No!!!

咳咳 我知道这玩意儿很长,所以我把答案提取了一下
下面上AC代码~~~~

//数据提交程序
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
    int a,b,c,n=0;
    cin>>a>>b>>c;
    if(a==1&&b==2&&c==3||a==2&&b==4&&c==6||a==3&&b==6&&c==9)
    {n=1;
    printf("192 384 576\n219 438 657\n273 546 819\n327 654 981\n");
    }
    if(a==1&&b==3&&c==5)
    {
        n=1;printf("129 387 645");
    }
    if(a==3&&b==7&&c==8)
    {
        n=1;printf("213 497 568\n321 749 856");
    }
    if(a==4&&b==5&&c==6)
    {
        n=1;printf("492 615 738");
    }

    if(a==123&&b==456&&c==789)//一开始漏了这段
    {
        n=1;printf("123 456 789");
    }
    if(n==0)cout<<"No!!!";
 }


“if(a==123&&b==456&&c==789)”

一开始没有AC,就是差了这段代码。愉快地使用 下载输入数据大法。。真没想到还能这样。。溜了溜了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值