Announcement

Collapse
No announcement yet.

[Lập trình newbie] Mỗi ngày một bài toán (số10)

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • [Lập trình newbie] Mỗi ngày một bài toán (số10)

    Hi all. Với bài toán "tìm huyết thống" ở bài trước chắc các bạn cũng hiểu được phần nào quan hệ huyết thống ở trong trường ta :aboom:. Hum nay là cũng là một bài toán số học:
    Bài toán:
    Cho a, b, c <= 1 tỉ. Tính (a ^ b) % c. (Phép ^ chỉ phép lũy thừa)
    Time limit: 1s
    Memory: 5MB
    Ví dụ:
    Input:
    2 3 2
    Out put:
    0


    Mở rộng bài toán khó hơn: [(a^b)^c]%(a^c).
    :shock:
    Have fun
    :sexy:.
    Facebook: Kiều Thắng
    Google Plus: Kiều Thắng
    Thông tin về du học các nước: Du học.


  • #2
    Vừa mới nhắc bên thread bên kia thì bên này có rồi :love:. Bài này có tìm được tình yêu không anh Mr.Kiều
    Có được dùng thư viện math.h không nhỉ
    nhớ không nhầm thì (a^b)%c=((a%c)^b)%c Giờ thì thấy đơn giản hơn rồi
    Last edited by 11520132; 20-07-2012, 23:22.

    Comment


    • #3
      giới hạn dưới của a, b, c ở bài toán mở rộng là bao nhiêu vậy anh.
      University of Information Technology
      Cao Văn Nhàn _ CE10520355
      SĐT: 0188 403 4943

      Email: caovannhan2002@gmail.com

      Comment


      • #4
        Originally posted by 10520355 View Post
        giới hạn dưới của a, b, c ở bài toán mở rộng là bao nhiêu vậy anh.
        thử làm với điều kiện như trên luôn xem sao
        Facebook: Kiều Thắng
        Google Plus: Kiều Thắng
        Thông tin về du học các nước: Du học.

        Comment


        • #5
          vậy giới hạn bắt đầu từ 1 đến 1 tỉ phải không anh
          Originally posted by 09520281 View Post
          thử làm với điều kiện như trên luôn xem sao
          University of Information Technology
          Cao Văn Nhàn _ CE10520355
          SĐT: 0188 403 4943

          Email: caovannhan2002@gmail.com

          Comment


          • #6
            Originally posted by 10520355 View Post
            vậy giới hạn bắt đầu từ 1 đến 1 tỉ phải không anh
            uh :funny:
            Facebook: Kiều Thắng
            Google Plus: Kiều Thắng
            Thông tin về du học các nước: Du học.

            Comment


            • #7
              Ca này hơi căng thẳng đấy! :misdoubt:
              Anh em code tìm ra bí mật của bài toán tìm người yêu này nào :go:
              Henry Nguyễn (Điệp Nguyễn MBA)
              --
              MBA, Sales Director, Co-founder - MYTH VIET NAM TECHNOLOGY CO., LTD - http://myth.vn/
              Email: diepnguyenmba@gmail.com - Phone: 0905.504.386

              Comment


              • #8
                bài toán trên thì mình đã có cách giải. chỉ nói về bài toán mở rộng thôi.
                ta có
                (ab)c / ac
                = abc / ac
                = ac(b-1)
                Nếu ac(b-1) là số nguyên thì ((ab)c % ac) = 0
                ngược lại nếu là số thập phân thì ((ab)c % ac) khác 0

                - Nếu c(b-1) >=0 thì ac(b-1) sẽ là một số nguyên
                mà với điều kiện a , b, c >=1 thì c(b-1) >=0
                vậy ac(b-1) sẽ luôn là số nguyên vậy ((ab)c % ac) luôn = 0.
                Last edited by 10520355; 21-07-2012, 00:02.
                University of Information Technology
                Cao Văn Nhàn _ CE10520355
                SĐT: 0188 403 4943

                Email: caovannhan2002@gmail.com

                Comment


                • #9
                  Originally posted by 10520355 View Post
                  bài toán trên thì mình đã có cách giải. chỉ nói về bài toán mở rộng thôi.
                  ta có
                  (ab)c / ac
                  = abc / ac
                  = ac(b-1)
                  Nếu ac(b-1) là số nguyên thì ((ab)c % ac) = 0
                  ngược lại nếu là số thập phân thì ((ab)c % ac) khác 0

                  - Nếu c(b-1) >=0 thì ac(b-1) sẽ là một số nguyên
                  mà với điều kiện a , b, c >=1 thì c(b-1) >=0
                  vậy ac(b-1) sẽ luôn là số nguyên vậy ((ab)c % ac) luôn = 0.
                  Hay đấy :sogood:
                  Henry Nguyễn (Điệp Nguyễn MBA)
                  --
                  MBA, Sales Director, Co-founder - MYTH VIET NAM TECHNOLOGY CO., LTD - http://myth.vn/
                  Email: diepnguyenmba@gmail.com - Phone: 0905.504.386

                  Comment


                  • #10
                    PHP Code:
                    #include <stdio.h>
                    int xuly(int a,int b,int c)
                    {
                        
                    int d=1;
                        while(
                    b>0)
                        {
                            while (
                    b%2==0)
                            {
                                
                    a=(a*a)%c;
                                
                    b=b/2;
                            }
                            
                    d=(d*a)%c;
                            
                    b--;
                        }
                        return 
                    d;
                    }
                    void main()
                    {
                        
                    int a;
                        
                    int b,c;
                        
                    scanf("%d%d%d",&a,&b,&c);
                        
                    printf("%d",xuly(a,b,c));

                    thuật toán thì có cái công thức ở post số 2
                    Ai giải thích cho em tại sao với số lớn thì nó lại ra kết quả sai không ?
                    Có phải cái chỗ a*a thì cỡ 1 tỉ x 1 tỉ 20 chữ số nên vượt qua giới hạn int không ?
                    Last edited by 11520132; 21-07-2012, 00:46.

                    Comment


                    • #11
                      Ta có: (a^b)^c = (a^c)^b => [(a^b)^c] \ (a^c) = a^b và [(a^b)^c] % (a^c) = 0

                      Comment


                      • #12
                        à còn cái mở rộng thì (a^b)^c=abc=(a^c)^b
                        >> ((ab)^c)%(ac)=((ac)^b)%ac=0

                        Comment


                        • #13
                          Originally posted by 09520668 View Post
                          Ta có: (a^b)^c = (a^c)^b => [(a^b)^c] \ (a^c) = a^b và [(a^b)^c] % (a^c) = 0
                          Ọc nhanh hơn mình

                          Comment


                          • #14
                            hic. acb / ac = ab
                            không biết công thức nào đây
                            Originally posted by 09520668 View Post
                            Ta có: (a^b)^c = (a^c)^b => [(a^b)^c] \ (a^c) = a^b và [(a^b)^c] % (a^c) = 0
                            University of Information Technology
                            Cao Văn Nhàn _ CE10520355
                            SĐT: 0188 403 4943

                            Email: caovannhan2002@gmail.com

                            Comment


                            • #15
                              Originally posted by 11520132 View Post
                              PHP Code:
                              #include <stdio.h>
                              int xuly(int a,int b,int c)
                              {
                                  
                              int d=1;
                                  while(
                              b>0)
                                  {
                                      while (
                              b%2==0)
                                      {
                                          
                              a=(a*a)%c;
                                          
                              b=b/2;
                                      }
                                      
                              d=(d*a)%c;
                                      
                              b--;
                                  }
                                  return 
                              d;
                              }
                              void main()
                              {
                                  
                              int a;
                                  
                              int b,c;
                                  
                              scanf("%d%d%d",&a,&b,&c);
                                  
                              printf("%d",xuly(a,b,c));

                              thuật toán thì có cái công thức ở post số 2
                              Ai giải thích cho em tại sao với số lớn thì nó lại ra kết quả sai không ?
                              Có phải cái chỗ a*a thì cỡ 1 tỉ x 1 tỉ 20 chữ số nên vượt qua giới hạn int không ?
                              nếu ở trường hợp b=0, c=1 thì bạn sai đấy. còn ở những nơi có lũy thừa mà bạn sử dụng kiểu int thì bị lỗi là cái chắc rồi. nếu để kiểu int thì bạn chỉ chạy đúng với số có 5 chữ số thôi.
                              Last edited by 10520355; 21-07-2012, 09:44.
                              University of Information Technology
                              Cao Văn Nhàn _ CE10520355
                              SĐT: 0188 403 4943

                              Email: caovannhan2002@gmail.com

                              Comment

                              LHQC

                              Collapse
                              Working...
                              X