有谁会么

2 条评论

  • @ 2025-12-8 18:42:30
    #include <iostream>
    using namespace std;
    
    int main() {
        long long k, n1, n2, n3, n4, n5;
        cin >> k >> n1 >> n2 >> n3 >> n4 >> n5;
        
        long long maxH = k * 100;  // 最大井深(厘米)
        long long K = 1 + n1 * n2 * n3 * n4 * n5;
        
        // 计算 M = 1 - n5 * (1 - n4 * (1 - n3 * (1 - n2)))
        long long temp = 1 - n2;
        temp = 1 - n3 * temp;
        temp = 1 - n4 * temp;
        long long M = 1 - n5 * temp;
        
        // 枚举井深 H
        for (long long H = 1; H <= maxH; H++) {
            // 检查 H*M 是否能被 K 整除
            if (H * M % K != 0) continue;
            
            long long A = H * M / K;
            if (A <= 0 || A >= H) continue;
            
            long long B = H - n1 * A;
            if (B <= 0 || B >= H) continue;
            
            long long C = H - n2 * B;
            if (C <= 0 || C >= H) continue;
            
            long long D = H - n3 * C;
            if (D <= 0 || D >= H) continue;
            
            long long E = H - n4 * D;
            if (E <= 0 || E >= H) continue;
            
            // 检查方程 (e) 是否成立(可选,但增加安全性)
            if (H != n5 * E + A) continue;
            
            // 检查五家绳长是否互不相同
            if (A == B || A == C || A == D || A == E ||
                B == C || B == D || B == E ||
                C == D || C == E ||
                D == E) continue;
            
            // 找到可行解,输出并结束程序
            cout << H << " " << A << " " << B << " " << C << " " << D << " " << E << endl;
            return 0;
        }
        
        // 没有找到可行解
        cout << "not found" << endl;
        return 0;
    }
    

    拿去看吧

    • @ 2025-11-8 19:40:26

      我会

      • 1

      信息

      ID
      208
      时间
      1000ms
      内存
      256MiB
      难度
      8
      标签
      (无)
      递交数
      18
      已通过
      5
      上传者