HHCN - Hình hộp chữ nhật

Xem dạng PDF

Gửi bài giải

Điểm: 1,00 (OI)
Giới hạn thời gian: 0.005s
Giới hạn bộ nhớ: 256M

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Go, Java, Pascal, Perl, PHP, Python, Ruby, Rust, Scratch, Swift

Bạn có một hình hộp chữ nhật có kích thước nguyên và biết được diện tích của 3 mặt có chung 1 đỉnh. Nhiệm vụ của bạn là tính tổng độ dài tất cả các cạnh của hình hộp chữ nhật này.

Hình<em>hộp</em>chữ_nhật.png

Input

  • Gồm ~1~ dòng duy nhất chưa ~3~ số nguyên dương ~S_1, S_2~ và ~S_3 (1 \le S_1, S_2, S_3 \le 10^{18})~.

Output

  • Ghi ~1~ số nguyên dương là tổng độ dài các cạnh của hình hộp chữ nhật trên sau khi chia dư cho ~10^9 + 7~.

Sample

Input #1
1 1 1
Output #1
12
Input #2
4 6 6
Output #2
28

Hint

Giải thích #1: Ba mặt đều có diện tích là ~1~ nên tất cả các cạnh sẽ có độ dài là ~1~, mà hình hộp chữ nhật có tổng cộng ~12~ cạnh, suy ra kết quả là ~12~.


Bình luận

Hãy đọc nội quy trước khi bình luận.



  • 0
    Iamnotsmart  đã bình luận lúc 18, Tháng 2, 2024, 15:34

    include <bits/stdc++.h>

    using namespace std;
    int base = 1e9+7;
    int main() {
        ios_base::sync_with_stdio(false);
        cin.tie(NULL);
        long long  a,b,c,l,h,r;
        cin>>a>>b>>c;
        h=sqrt((long double)a*c/b); //sqrt((long double)(a))*sqrt((long double)(c))/sqrt((long double)(b));//h*l*r/h*l
        l=(a/h)%base;
        r=(c/h)%base;
        cout<<((h+l+r)%base*4)%base;
        return 0;
    }   Ai cần code thì đây =))))
    

  • 1
    hohoanghai5042011  đã bình luận lúc 17, Tháng 1, 2024, 12:32 chỉnh sửa

    #include <bits/stdc++.h>

    using namespace std; int main() { long long mod = 1000000007; long long s1, s2, s3; cin >> s1 >> s2 >> s3; double a = ((sqrtl(s1) * sqrtl(s2)) / sqrtl(s3)); double b = ((sqrtl(s1) * sqrtl(s3)) / sqrtl(s2)); double c = ((sqrtl(s2) * sqrtl(s3)) / sqrtl(s1)); cout << (4 * (int(a) % mod + int(b) % mod + int(c) % mod)) % mod; } full ac


  • 3
    dinhvantung0611  đã bình luận lúc 10, Tháng 1, 2024, 13:14 chỉnh sửa

    Ý tưởng: Ta có s1, s2, s3 lần lượt là diện tích của của các mặt phẳng có chung đỉnh Giả sử: (a, b, h chưa biết)

    • a * b = s1
    • a * h = s2
    • b * h = s3

    s1 * s2 * s3 = a^2 * b^2 * h^2 => V = sqrt(a^2 * b^2 * h^2) = sqrt(s1 * s2 * s3)

    để suy ra 3 cạnh ta lấy V chia lần lượt cho các s1, s2, s3. Vì V bằng diện tích 1 mặt nhân với chiều cao mà :>.

    => V / s1 = sqrt((s2 * s3) / s1) = a

    => V / s2 = sqrt((s1 * s3) / s2) = b

    => V / s3 = sqrt((s1 * s2) / s3) = h

    Kết quả sẽ là 4 * (a % 1000000007 + b % 1000000007 + h % 1000000007) % 1000000007.

    Thực sự cái khó của bài này nằm ở 3 điều

    • Thứ nhất: Nếu không suy được ra công thức thì không làm được
    • Thứ hai: Có công thức tính, tuy nhiên bộ số lớn quá cần xử lý khéo (cái này hành tôi nhất :) )
    • Thứ ba: Thời gian chấm test có 0.005s thì chỉ có C++ mới AC được chứ python thì đi rồi

    CƯỜNG GIẢ HỌ ĐINH. VẠN CỔ TỐI CƯỜNG


    • 0
      phamvanphuong  đã bình luận lúc 2, Tháng 2, 2024, 14:41

      Pascal thì sao ạ


      • -1
        dinhvantung0611  đã bình luận lúc 5, Tháng 2, 2024, 4:27

        Sr bạn mình không code pas nên không rõ. Nếu đc bạn nên học C++, python tại 2 ngôn ngữ này phổ biến và rất mạnh trong lập trình thi đấu.


    • 2
      dinhvantung0611  đã bình luận lúc 10, Tháng 1, 2024, 13:26

      Note: Do bộ số lớn, cho nên nếu s1 * s2 * s3 rồi mới lấy căn sẽ rất lớn. Vì vậy, cần lấy căn của từng cái 1 (căn 1 tích = tích các căn): sqrt(s1) * sqrt(s2) * sqrt(s3)

      tương tự với đoạn tính V/s1, V/s2, V/s3 nhé tách ra (thương các căn = căn các thương)


    • 2
      dinhvantung0611  đã bình luận lúc 10, Tháng 1, 2024, 13:15 chỉnh sửa

      Code đã AC:

      // CUONG GIA HO DINH. VAN CO TOI CUONG // KHONG COPY AND PASTE NHE. HIEU GIAI THICH ROI XEM CODE

       ll mod = 1000000007;
       ll s1, s2, s3;
       cin >> s1 >> s2 >> s3;
       double a = ((sqrtl(s1) * sqrtl(s2)) / sqrtl(s3));
       double b = ((sqrtl(s1) * sqrtl(s3)) / sqrtl(s2));
       double c = ((sqrtl(s2) * sqrtl(s3)) / sqrtl(s1));
       cout << (4 * (ll(a) % mod + ll(b) % mod + ll(c) % mod)) % mod;
      

  • -1
    ngheo  đã bình luận lúc 7, Tháng 1, 2024, 15:25 chỉnh sửa

    ai cho e xin test 22 voi a


    • -2
      ngheo  đã bình luận lúc 8, Tháng 1, 2024, 14:42

      a thoi e lam ra roi a


      • 0
        haidang3004  đã bình luận lúc 8, Tháng 1, 2024, 15:09

        giúp mik với bạn lm mãi ko ra


    • -1
      kenato  đã bình luận lúc 7, Tháng 1, 2024, 16:58

      đồng cảnh ngộ ;-;