嘉岳呀 发表于 2021-11-12 19:20:29

求助:这里的代码是什么意思?

原题:https://www.luogu.com.cn/problem/P1008

代码:

#include <cstdio>
using namespace std;

int main(){
    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 == (a * 100 + b * 10 + c) * 2 && g * 100 + h * 10 + i == (a * 100 + b * 10 + c) * 3){
                printf("%d %d %d\n",a * 100 + b * 10 + c,d * 100 + e * 10 + f,g * 100 + h * 10 + i);
            }
      }
}

想问一下其中的 d * 100 + e * 10 + f == (a * 100 + b * 10 + c) * 2 && g * 100 + h * 10 + i == (a * 100 + b * 10 + c) * 3 是什么意思?

嘉岳呀 发表于 2021-11-12 19:28:06

@人造人 @jackz007

lei1996 发表于 2021-11-12 22:17:10

题目里说了使这 3 个三位数构成 1 : 2 : 3 的比例
那么代码明显a,b,c就是第一个三位数的百位、十位、个位 同理d,e,f是第二个三位数的,g,h,i是第三个三位数的
d * 100 + e * 10 + f == (a * 100 + b * 10 + c) * 2 && g * 100 + h * 10 + i == (a * 100 + b * 10 + c) * 3不就表示要找第一个三位数的两倍等于第二个三位数,第一个三位数的三倍等于第三个三位数

人造人 发表于 2021-11-12 22:38:15

判断这 3 个三位数是不是构成 1:2:3 的比例

d * 100 + e * 10 + f == (a * 100 + b * 10 + c) * 2 && g * 100 + h * 10 + i == (a * 100 + b * 10 + c) * 3
(第 1 个数 == 第 0 个数 × 2) && (第 3 个数 == 第 0 个数 × 3)
(第 0 个数 × 2 == 第 1 个数) && (第 0 个数 × 3 == 第 3 个数)
页: [1]
查看完整版本: 求助:这里的代码是什么意思?