Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 20 kết quả

Đề tài: Thuật toán tìm số 3 chữ số mà tổng lập phương các số bằng chính nó

  1. #1
    Ngày gia nhập
    04 2009
    Bài viết
    3

    Mặc định Thuật toán tìm số 3 chữ số mà tổng lập phương các số bằng chính nó

    các bạn ơi thuật toán để tìm số có 3 chữ số abc mà tổng lập phương của các chữ số = chính số đó (a^3+b^3+c^3=abc=100*a+10*b+c )

  2. #2
    Ngày gia nhập
    11 2008
    Nơi ở
    Hà Nội
    Bài viết
    70

    Bài này có đầy trên diễn đàn rồi.

    C Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3. void main()
    4. {
    5.     //clrscr();
    6.     int num,donvi,chuc,tram,count=0;
    7.     for(num=100;num<1000;num++)
    8.     {
    9.         donvi=num%10;
    10.         chuc=(num/10)%10;
    11.         tram=(num/100);
    12.         if(donvi*donvi*donvi+chuc*chuc*chuc+tram*tram*tram==num)
    13.         {
    14.             printf("\n So %d thoa man",num);
    15.             count++;
    16.         }
    17.     }
    18.     printf("\n Tong cong co %d so thoa man yeu cau",count);
    19.     getch();
    20. }
    Đã được chỉnh sửa lần cuối bởi langman : 10-04-2009 lúc 10:08 AM.
    Dân thường sống đẹp đè bẹp dân chơi.
    Hi [you]

  3. #3
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,007

    Trích dẫn Nguyên bản được gửi bởi zodjac1990 Xem bài viết
    Bài này có đầy trên diễn đàn rồi.

    C Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3. void main()
    4. {
    5.     //clrscr();
    6.     int num,donvi,chuc,tram,count=0;
    7.     for(num=100;num<1000;num++)
    8.     {
    9.         donvi=num%10;
    10.         chuc=(num/10)%10;
    11.         tram=(num/100);
    12.         if(donvi*donvi*donvi+chuc*chuc*chuc+tram*tram*tram==num)
    13.         {
    14.             printf("\n So %d thoa man",num);
    15.             count++;
    16.         }
    17.     }
    18.     printf("\n Tong cong co %d so thoa man yeu cau",count);
    19.     getch();
    20. }
    dài thế ...........

    các số như vậy gọi là số amstrong

    PHP Code:
    #include <stdio.h>
    #include <conio.h>


    void main(void)
        {
            
    clrscr();
            for(
    int a=1;a<=9;a++)
                for(
    int b=0;b<=9;b++)
                    for(
    int c=0;c<=9;c++)
                        if (
    a*100+b*10+c==a*a*a+b*b*b+c*c*c)
                            
    printf("%d%d%d    ",a,b,c);

            
    getch();
        } 
    ^_,^

    Facebook : https://www.facebook.com/langmaninternet

    Bùi Tấn Quang

  4. #4
    Ngày gia nhập
    11 2008
    Bài viết
    116

    Trích dẫn Nguyên bản được gửi bởi langman Xem bài viết
    dài thế ...........

    các số như vậy gọi là số amstrong

    PHP Code:
    #include <stdio.h>
    #include <conio.h>


    void main(void)
        {
            
    clrscr();
            for(
    int a=1;a<=9;a++)
                for(
    int b=0;b<=9;b++)
                    for(
    int c=0;c<=9;c++)
                        if (
    a*100+b*10+c==a*a*a+b*b*b+c*c*c)
                            
    printf("%d%d%d    ",a,b,c);

            
    getch();
        } 
    Cần gì dùng tới 3 vòng for lận anh. Em chỉ cần dùng 1 vòng while thôi là đủ rồi
    PHP Code:
    int kt(int x)
        {
        
    int tg=0,tong=0;
        
    tg=x;
        while(
    tg>0)
        {
            
    tong+=(tg%10)*(tg%10)*(tg%10);
            
    tg/=10;
        }
        if(
    tong==x) return 1;
        return 
    0;


  5. #5
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,007

    Trích dẫn Nguyên bản được gửi bởi clementboy03 Xem bài viết
    Cần gì dùng tới 3 vòng for lận anh. Em chỉ cần dùng 1 vòng while thôi là đủ rồi
    PHP Code:
    int kt(int x)
        {
        
    int tg=0,tong=0;
        
    tg=x;
        while(
    tg>0)
        {
            
    tong+=(tg%10)*(tg%10)*(tg%10);
            
    tg/=10;
        }
        if(
    tong==x) return 1;
        return 
    0;

    post full code của bạn lên xem ai dài hơn ..... rồi mình sẽ phân tích delay cho xem cách nào chạy nhanh nhất
    cách của mình là tối ưu nhất rồi.

    P/S : đây là 3 vòng lặp for lồng nhau chứ ko phải là 3 vòng lặp for.
    ^_,^

    Facebook : https://www.facebook.com/langmaninternet

    Bùi Tấn Quang

  6. #6
    Ngày gia nhập
    11 2008
    Bài viết
    203

    Mặc định Thuật toán tìm số 3 chữ số mà tổng lập phương các số bằng chính nó

    Code của langman có độ phức tạp là O(n^3) là chạy rùa vô địch trong 3 code trên nhé!
    Tôi tin rằng: giải thuật thì có thể tìm trong hàng trăm GB ebook, hoặc Google nhưng code chạy thì chưa chắc! Hãy post code để chứng tỏ giải thuật của bạn là đúng!
    Giải thuật là bản thiết kế của ngôi nhà, code là phần xây dựng. Nếu chỉ xây nhà trên giấy thì ta sống chả khác nào người nguyên thủy.

  7. #7
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,007

    Trích dẫn Nguyên bản được gửi bởi Loveanygirls Xem bài viết
    Code của langman có độ phức tạp là O(n^3) là chạy rùa vô địch trong 3 code trên nhé!
    đánh giá bằng thực tế đi.

    1. tất cả các cách đều phải lặp 900 lần dù muốn hay ko.

    2. tất cả đều phải kiểm tra,


    vậy chúng ta cùng đánh giá nhé.


    về số lần lặp là bằng nhau. chỉ xét về kiểm tra thôi

    của zodijac1990 là :
    PHP Code:
    {
            
    donvi=num%10;
            
    chuc=(num/10)%10;
            
    tram=(num/100);
            if(
    donvi*donvi*donvi+chuc*chuc*chuc+tram*tram*tram==num)
            {
                
    printf("\n So %d thoa man",num);
                
    count++;
            }
        } 


    của clementboy03 là :
    PHP Code:
    int kt(int x)
        {
        
    int tg=0,tong=0;
        
    tg=x;
        while(
    tg>0)
        {
            
    tong+=(tg%10)*(tg%10)*(tg%10);
            
    tg/=10;
        }
        if(
    tong==x) return 1;
        return 
    0;


    và của tôi là :
    PHP Code:
          if (a*100+b*10+c==a*a*a+b*b*b+c*c*c)
                            
    printf("%d%d%d    ",a,b,c); 

    vậy nha.


    đầu tiên : cách của clementboy03 nhìn qua đã thấy đẻ thêm vòng lặp, biết chắc chắn là kiểm tra của clementboy03 chậm hơn của tôi là cái chắc.

    1. Tài nguyên bộ nhớ :
    nhìn sơ qua cũng có thế đánh giá về tài nguyên bộ nhớ thế nào rồi .
    zodijac1990 thì phải thêm 3 biến phụ
    clementboy03 thì ko cần nói, nhìn cái hàm là biết.

    2. tốc độ :
    cách của zodijac thêm 3 biều thức rồi cuối cùng cũng đưa ra 1 biểu thức so sách.
    của clementboy03 thì mỗi lần lặp sẽ tốn thời việc xử lý hàm
    tốc độ của hàm này và thời gian tính biểu thức điều kiện của tôi thì khỏi ý kiến.


    và bạn à
    a,b,c của tôi ko vượt quá 9 nên các phép tính với a,b,c là tương đối nhanh so với việc xử lý x từ 100 -> 999

    => kết luận.

    cái gì cũng phải thực tế.
    Đã được chỉnh sửa lần cuối bởi langman : 10-04-2009 lúc 10:51 AM.
    ^_,^

    Facebook : https://www.facebook.com/langmaninternet

    Bùi Tấn Quang

  8. #8
    Ngày gia nhập
    11 2008
    Bài viết
    116

    nhưng hàm của em chỉ dùng 1 vòng while chứ đâu dùng tới 3 vòng lặp for đâu. Còn đánh giá thời gian chạy hay tốn bộ nhớ thì em chịu vì em mới là newbie à. Hơn nữa em thấy hàm của anh chỉ là in ra dưới dạng hình thức thôi chứ nếu đem tính toán là không thể.

  9. #9
    Ngày gia nhập
    04 2009
    Bài viết
    68

    nhưng hàm của em chỉ dùng 1 vòng while chứ đâu dùng tới 3 vòng lặp for đâu. Còn đánh giá thời gian chạy hay tốn bộ nhớ thì em chịu vì em mới là newbie à. Hơn nữa em thấy hàm của anh chỉ là in ra dưới dạng hình thức thôi chứ nếu đem tính toán là không thể.
    Bạn ơi đề bài chỉ yêu cầu làm tìm thôi mà. Nói thế là cãi cùn rùi :P
    Bạn ơi phải tính theo độ phức tạp của hàm chứ :P. Về thuật toán thì cách 1 và cách 2 là giống nhau mà :P. Phân tích về độ phức tạp của 3 code này đi bạn :P
    Đúng là độ phức tạp của bạn langman ít hơn (18*20*20)
    Của 2 bạn kia còn phải thêm các bước chia nữa còn langman thì lấy trực tiếp số luôn. Cách của bạn langman độ phức tạp là thấp nhất rùi. hihi
    Đã được chỉnh sửa lần cuối bởi xiu_coi : 10-04-2009 lúc 07:20 PM.

  10. #10
    Ngày gia nhập
    11 2008
    Nơi ở
    Hà Nội
    Bài viết
    70

    Code anh langman là chuẩn rùi.
    Dân thường sống đẹp đè bẹp dân chơi.
    Hi [you]

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

  1. Dịch thuật, công ty dịch thuật, dịch vụ dịch thuật chuyên nghiệp
    Gửi bởi vecvn trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 4
    Bài viết cuối: 18-11-2012, 10:44 PM
  2. Dịch vụ kế toán: Báo cáo thuế, dịch vụ tư vấn thuế, báo cáo thuế tncn vnnp
    Gửi bởi ecomvnnp01 trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 1
    Bài viết cuối: 16-02-2012, 11:07 AM
  3. Bài tập C++ Viết chương trình nhập số lượng hàng hóa, giá cả, thuế, xuất ra tổng giá, thuế, tổng cộng
    Gửi bởi seit 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: 04-03-2011, 09:04 AM
  4. Hướng dẫn kê khai thuế thu nhập cá nhân, thuế doanh nghiệp 0903034381
    Gửi bởi thngxanhcty 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-05-2010, 02:33 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