P1618 三连击(升级版)

题目传送门

一、暴力大模拟

#include <bits/stdc++.h>

using namespace std;

int main() {
    int a, b, c;
    cin >> a >> b >> c;
    bool found = false;
    for (int i1 = 1; i1 <= 9; i1++)
        for (int i2 = 1; i2 <= 9; i2++) {
            if (i1 == i2) continue;
            for (int i3 = 1; i3 <= 9; i3++) {
                if (i1 == i3 || i3 == i2) continue;
                for (int i4 = 1; i4 <= 9; i4++) {
                    if (i4 == i1 || i4 == i2 || i4 == i3) continue;
                    for (int i5 = 1; i5 <= 9; i5++) {
                        if (i5 == i1 || i5 == i2 || i5 == i3 || i5 == i4) continue;
                        for (int i6 = 1; i6 <= 9; i6++) {
                            if (i6 == i1 || i6 == i2 || i6 == i3 || i6 == i4 || i6 == i5) continue;
                            for (int i7 = 1; i7 <= 9; i7++) {
                                if (i7 == i1 || i7 == i2 || i7 == i3 || i7 == i4 || i7 == i5 || i7 == i6) continue;
                                for (int i8 = 1; i8 <= 9; i8++) {
                                    if (i8 == i1 || i8 == i2 || i8 == i3 || i8 == i4 || i8 == i5 || i8 == i6 ||
                                        i8 == i7)
                                        continue;
                                    for (int i9 = 1; i9 <= 9; i9++) {
                                        if (i9 == i1 || i9 == i2 || i9 == i3 || i9 == i4 || i9 == i5 || i9 == i6 ||
                                            i9 == i7 || i9 == i8)
                                            continue;

                                        int a1 = i1 * 100 + i2 * 10 + i3;
                                        int b1 = i4 * 100 + i5 * 10 + i6;
                                        int c1 = i7 * 100 + i8 * 10 + i9;

                                        if (a1 / a == b1 / b && b1 / b == c1 / c && a1 % a == 0 && b1 % b == 0 &&
                                            c1 % c == 0){
                                            cout << a1 << " " << b1 << " " << c1 << endl;
                                            found = true;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    if (!found)cout << "No!!!";
    return 0;
}

二、STL全排列

#include <bits/stdc++.h>

using namespace std;
typedef long long LL;
int a[10];
/**
 总结:STL中的全排列函数框架
  do {

    } while (next_permutation(a + 1, a + 10));

    1、只能配合数组使用
    2、注意范围是前闭后开。
    3、效果是可以所有可能出现的全排列
 */
int main() {
    LL A, B, C, x, y, z, cnt = 0;
    cin >> A >> B >> C;
    for (int i = 1; i <= 9; i++) a[i] = i;
    do {
        x = a[1] * 100 + a[2] * 10 + a[3];
        y = a[4] * 100 + a[5] * 10 + a[6];
        z = a[7] * 100 + a[8] * 10 + a[9];
        if (x * B == y * A && y * C == z * B) //避免除法,防止爆long long
            printf("%lld %lld %lld\n", x, y, z), cnt++;
    } while (next_permutation(a + 1, a + 10));

    if (!cnt)printf("No!!!");
    return 0;
}
posted @   糖豆爸爸  阅读(39)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
历史上的今天:
2017-11-23 利用WINDOWS活动目录提供LDAP的方案
2017-11-23 Centos6.9下安装OpenOffice 4.1.4
2017-11-23 CentOS 7下OpenLDAP编译安装及配置
2014-11-23 现行技术体系的问题总结
Live2D
点击右上角即可分享
微信分享提示