Trang 1 trên tổng số 4 123... Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 31 kết quả

Đề tài: Kiểm tra 1 số nguyên dương có phân tích thành tích 3 số nguyên liên tiếp dc hay không?

  1. #1
    Ngày gia nhập
    03 2012
    Nơi ở
    Minh Khai- Hai Bà Trưng - Hà Nội
    Bài viết
    78

    Mặc định Kiểm tra 1 số nguyên dương có phân tích thành tích 3 số nguyên liên tiếp dc hay không?

    Cho số m<10^20, Kiểm tra 1 số nguyên dương có phân tích thành tích 3 số nguyên liên tiếp dc hay không?
    Ví dụ nhập số 24 kết quả cho ra 2 3 4 còn số 25 kết quả cho ra:"Khong phan tich duoc".
    Mọi người cho mình hỏi thêm nữa,

    1. mình có đoạn code;
    PHP Code:
    #include<iostream.h>
    int main()
    {
        
    float z;
        
    z=2/5;
        
    cout<<z;
        return 
    0;
        } 
    z là kiểu số thực vậy tại sao kêys quả cho ra lại là số 0 ( phần nguyên của 2/5)

    2. Mình in ra số
    PHP Code:
    123456789 
    với kiểu
    PHP Code:
    long double 
    thì nó ra
    PHP Code:
    1.23457e+08 
    code như sau:
    PHP Code:
    long double n=123456789;
    cout<<z
    vậy muốn nó in ra cả cái dãy 123456789 thì phải làm như thế nào? Mong các cao nhân chỉ dạy, Xin cảm ơn

  2. #2
    Ngày gia nhập
    05 2011
    Bài viết
    39

    Trích dẫn Nguyên bản được gửi bởi vudoanbt3 Xem bài viết
    Cho số m<10^20, Kiểm tra 1 số nguyên dương có phân tích thành tích 3 số nguyên liên tiếp dc hay không?
    Ví dụ nhập số 24 kết quả cho ra 2 3 4 còn số 25 kết quả cho ra:"Khong phan tich duoc".
    Mọi người cho mình hỏi thêm nữa,

    1. mình có đoạn code;
    PHP Code:
    #include<iostream.h>
    int main()
    {
        
    float z;
        
    z=2/5;
        
    cout<<z;
        return 
    0;
        } 
    z là kiểu số thực vậy tại sao kêys quả cho ra lại là số 0 ( phần nguyên của 2/5)

    2. Mình in ra số
    PHP Code:
    123456789 
    với kiểu
    PHP Code:
    long double 
    thì nó ra
    PHP Code:
    1.23457e+08 
    code như sau:
    PHP Code:
    long double n=123456789;
    cout<<z
    vậy muốn nó in ra cả cái dãy 123456789 thì phải làm như thế nào? Mong các cao nhân chỉ dạy, Xin cảm ơn
    Giả sử ta cần phân tích xem số a nào đó có phù hợp yêu cầu không , ta giả sử a được phân tích thành tích 3 số liên tiếp: (x-1)*x*(x+1)=m
    => x^3-x=m
    => x^3=m+x
    Giả sử m có n chữ số , như vậy x có khoảng tối đa n/3+1 chữ số . Với m < 10^20 thì x<10^7 . Ta thực hiên duyệt các số x để xem x^3 có bằng m+x không là ta có đáp án .
    Thời gian thực hiện không quá 10^8 phép tính . Tất nhiên mình đánh giá sơ bộ vậy , độ phức tạp thời gian thực hiện còn phụ thuộc vào thời gian chạy của phép tính lũy thừa 3 của số lớn .

  3. #3
    Ngày gia nhập
    03 2012
    Nơi ở
    Minh Khai- Hai Bà Trưng - Hà Nội
    Bài viết
    78

    Trích dẫn Nguyên bản được gửi bởi nguyenvd89 Xem bài viết
    Giả sử ta cần phân tích xem số a nào đó có phù hợp yêu cầu không , ta giả sử a được phân tích thành tích 3 số liên tiếp: (x-1)*x*(x+1)=m
    => x^3-x=m
    => x^3=m+x
    Giả sử m có n chữ số , như vậy x có khoảng tối đa n/3+1 chữ số . Với m < 10^20 thì x<10^7 . Ta thực hiên duyệt các số x để xem x^3 có bằng m+x không là ta có đáp án .
    Thời gian thực hiện không quá 10^8 phép tính . Tất nhiên mình đánh giá sơ bộ vậy , độ phức tạp thời gian thực hiện còn phụ thuộc vào thời gian chạy của phép tính lũy thừa 3 của số lớn .
    Oh mình nghĩ là m=n*(n+1)*(n+2) mà n^3<n*(n+1)*(n+2) <(n+1)^3 ( thằng bạn bảo cái bất đẳng thức này nên cũng ko rõ) vậy n< căn bậc 3 của m<n+1

    PHP Code:
    #include<istream.h>
    #include<fstream.h>
    #include<math.h>
    #include<iomanip.h>
    int main()
    {    
    long double m,n;
        
    ifstream vao("number.inp",ios::in);
        
    vao>>m;
        
    vao.close();
        
    ofstream ra("number.out",ios::out);
        
    n=int(pow(m,0.3333333333333333333333333333333));
        ;
        if((
    n*(n+1)*(n+2))==mra<<setw(20)<<n<<" "<<setw(20)<<n+1<<" "<<setw(20)<<n+2; else ra<<"sai";
        
    ra.close();
        
        
        
        return 
    0;
        } 
    Nhưng vấn đề là các bạn trả lời cái vị số 123456789 giùm mình, và vị in ra số 2/5 nữa. Mình dung hàm
    PHP Code:
    pow(m,1/3
    tức là căn bậc 3 của m nhưng lại ra 1 vì thằng 1/3 =0 ( mình ko hiểu sao lại vậy)
    nên đành gõ là
    PHP Code:
    pow(m,0.3333333333333333333333333333333

    AI giúp với

  4. #4
    Ngày gia nhập
    05 2011
    Bài viết
    39

    Trích dẫn Nguyên bản được gửi bởi vudoanbt3 Xem bài viết
    Oh mình nghĩ là m=n*(n+1)*(n+2) mà n^3<n*(n+1)*(n+2) <(n+1)^3 ( thằng bạn bảo cái bất đẳng thức này nên cũng ko rõ) vậy n< căn bậc 3 của m<n+1

    PHP Code:
    #include<istream.h>
    #include<fstream.h>
    #include<math.h>
    #include<iomanip.h>
    int main()
    {    
    long double m,n;
        
    ifstream vao("number.inp",ios::in);
        
    vao>>m;
        
    vao.close();
        
    ofstream ra("number.out",ios::out);
        
    n=int(pow(m,0.3333333333333333333333333333333));
        ;
        if((
    n*(n+1)*(n+2))==mra<<setw(20)<<n<<" "<<setw(20)<<n+1<<" "<<setw(20)<<n+2; else ra<<"sai";
        
    ra.close();
        
        
        
        return 
    0;
        } 
    Nhưng vấn đề là các bạn trả lời cái vị số 123456789 giùm mình, và vị in ra số 2/5 nữa. Mình dung hàm
    PHP Code:
    pow(m,1/3
    tức là căn bậc 3 của m nhưng lại ra 1 vì thằng 1/3 =0 ( mình ko hiểu sao lại vậy)
    nên đành gõ là
    PHP Code:
    pow(m,0.3333333333333333333333333333333

    AI giúp với
    Bất đẳng thức đó sai ở vế thứ hai ( Nếu nó đúng , ta có thể khẳng định không tồn tại m thỏa mãn tính chất là tích 3 số liên tiếp ) . Hơn nữa khai căn số lớn như vậy là khó khăn , mình không biết thuật toán nào hiệu quả để khai căn bậc 3 trực tiếp . Vì thế ta nên giới hạn giá trị có được của n rồi duyệt lần lượt từng giá trị rồi mũ 3 lên .

  5. #5
    Ngày gia nhập
    03 2012
    Nơi ở
    Minh Khai- Hai Bà Trưng - Hà Nội
    Bài viết
    78

    Trích dẫn Nguyên bản được gửi bởi nguyenvd89 Xem bài viết
    Bất đẳng thức đó sai ở vế thứ hai ( Nếu nó đúng , ta có thể khẳng định không tồn tại m thỏa mãn tính chất là tích 3 số liên tiếp ) . Hơn nữa khai căn số lớn như vậy là khó khăn , mình không biết thuật toán nào hiệu quả để khai căn bậc 3 trực tiếp . Vì thế ta nên giới hạn giá trị có được của n rồi duyệt lần lượt từng giá trị rồi mũ 3 lên .
    Quả thực là khó khăn, thế là sao hiện dc cả cái vụ số 123456789 ấy hả bác, với cả cái vụ hàm pow() ấu, mình đề pow(8,1/3) ko ra 2 mà ra 1 @@

  6. #6
    Ngày gia nhập
    05 2011
    Bài viết
    39

    Mặc định Kiểm tra 1 số nguyên dương có phân tích thành tích 3 số nguyên liên tiếp dc hay không?

    Trích dẫn Nguyên bản được gửi bởi vudoanbt3 Xem bài viết
    Quả thực là khó khăn, thế là sao hiện dc cả cái vụ số 123456789 ấy hả bác, với cả cái vụ hàm pow() ấu, mình đề pow(8,1/3) ko ra 2 mà ra 1 @@
    Hì , như mình đã phân tích ,nếu duyệt chắc mất tầm 10^8 phép tính trong trường hợp tồi nhất ( cả thời gian lũy thừa 3 lên ) , máy tính chạy mất chưa đến 1s .

    Còn mấy câu sau thì mình chịu . )

  7. #7
    Ngày gia nhập
    03 2012
    Nơi ở
    Minh Khai- Hai Bà Trưng - Hà Nội
    Bài viết
    78

    Trích dẫn Nguyên bản được gửi bởi nguyenvd89 Xem bài viết
    Hì , như mình đã phân tích ,nếu duyệt chắc mất tầm 10^8 phép tính trong trường hợp tồi nhất ( cả thời gian lũy thừa 3 lên ) , máy tính chạy mất chưa đến 1s .

    Còn mấy câu sau thì mình chịu . )
    cái của bạn mình đang xem , bạng cho cái demo dc ko

  8. #8
    Ngày gia nhập
    05 2011
    Bài viết
    39

    Trích dẫn Nguyên bản được gửi bởi vudoanbt3 Xem bài viết
    cái của bạn mình đang xem , bạng cho cái demo dc ko
    Mình chưa làm bao giờ nên không có demo , chỉ có thể gợi ý bạn thuật toán được thôi .

  9. #9
    Ngày gia nhập
    03 2012
    Nơi ở
    Minh Khai- Hai Bà Trưng - Hà Nội
    Bài viết
    78

    Trích dẫn Nguyên bản được gửi bởi nguyenvd89 Xem bài viết
    Mình chưa làm bao giờ nên không có demo , chỉ có thể gợi ý bạn thuật toán được thôi .
    mà cái của mình đúng mà
    n(n+2)=n^2+2n< n^2+2n+1=(n+1)^2
    suy ra n(n+1)(n+2)<(n+1)^3

  10. #10
    Ngày gia nhập
    05 2011
    Bài viết
    39

    Trích dẫn Nguyên bản được gửi bởi vudoanbt3 Xem bài viết
    mà cái của mình đúng mà
    n(n+2)=n^2+2n< n^2+2n+1=(n+1)^2
    suy ra n(n+1)(n+2)<(n+1)^3
    Sorry , mình nhầm .

Các đề tài tương tự

  1. Liên thông đại học tài nguyên môi trường tháng 11/2012
    Gửi bởi nguyenthuhoants trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 19-11-2012, 09:45 AM
  2. danh sách liên kết đơn của các số nguyên
    Gửi bởi nhatnha trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 29-03-2011, 01:06 PM
  3. C++ Tutorial Cài đặt thuật toán kiểm tra số nguyên tố, các bài toán liên quan
    Gửi bởi mp121209 trong diễn đàn Thủ thuật, Tutorials và Mã nguồn C/C++/C++0x
    Trả lời: 13
    Bài viết cuối: 19-01-2011, 01:23 PM
  4. Danh sách liên kết đơn các số nguyên!
    Gửi bởi Mr Bin trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 05-07-2009, 09:07 AM
  5. [BT][Số nguyên lớn]Biểu diễn số nguyên lớn bằng danh sách liên kế
    Gửi bởi yuno trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 10
    Bài viết cuối: 13-07-2007, 11:46 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn