C/C++教程

C++Luogu:1618——三连击(升级版)

本文主要是介绍C++Luogu:1618——三连击(升级版),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

题目来自:https://www.luogu.com.cn/problem/P1618

题目描述

将 1, 2,\ldots, 91,2,…,9 共 99 个数分成三组,分别组成三个三位数,且使这三个三位数的比例是 A:B:CA:B:C,试求出所有满足条件的三个三位数,若无解,输出 No!!!

//感谢黄小U饮品完善题意

输入格式

三个数,A,B,CA,B,C。

输出格式

若干行,每行 33 个数字。按照每行第一个数字升序排列。

输入输出样例

输入 #1   1 2 3 输出 #1    192 384 576  219 438 657
273 546 819
327 654 981

说明/提示

保证 A<B<CA<B<C。

#include <cstdio>
#include <iostream>
using namespace std;
 
int main(){
    int x,y,z;
    cin >> x >> y >> z;
    bool ok = false;
    for (int a = 1;a <= 9;a++)
    for (int b = 1;b <= 9;b++)
    for (int c = 1;c <= 9;c++)
    for (int d = 1;d <= 9;d++)
    for (int e = 1;e <= 9;e++)
    for (int f = 1;f <= 9;f++)
    for (int g = 1;g <= 9;g++)
    for (int h = 1;h <= 9;h++)
    for (int i = 1;i <= 9;i++)
        if (a + b + c + d + e + f + g + h + i == 45 && a * b * c * d * e * f * g * h * i == 362880){
            if ((d * 100 + e * 10 + f) / y == (a * 100 + b * 10 + c) / x && (g * 100 + h * 10 + i) / z == (a * 100 + b * 10 + c) / x){
                if ((a * 100 + b * 10 + c) % x == 0 && (d * 100 + e * 10 + f) % y == 0 && (g * 100 + h * 10 + i) % z == 0){
                    printf("%d %d %d\n",a * 100 + b * 10 + c,d * 100 + e * 10 + f,g * 100 + h * 10 + i);
                    ok = true;
                }
            }
        }
    if (!ok) printf("No!!!");
    return 0;  
}

 

这篇关于C++Luogu:1618——三连击(升级版)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!