Announcement

Collapse
No announcement yet.

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

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

  • #16
    Originally posted by 10520549 View Post
    Code:
    #include <stdio.h>
    #include <conio.h>
    #include <math.h>
    void main()
    {
    	double i,n,a;
    	float s=0;
    	
    		printf("Nhap vao so n");
    		scanf("%d",&n);
    	
    	for(int i=1;i<=n;i++)
    	{
    		a = pow(2, ((double) i) );
    		s+= 1/(a);
    	
    		  
    	}
    	
    	printf("%lf",s);
    	getch();
    }
    sao không chạy được ta

    - scanf("%d",&n); ---> số double %lf ko phải %d
    - printf("%lf",s); --> số float %f chứ ko phải %lf nhé

    Anh nghĩ bài này n chỉ cần kiểu long là oki rùi Và cho nó for(int i = 1; i <= log2(N); i++) là ok:happy:
    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


    • #17
      Originally posted by 11520132 View Post
      PHP Code:
      #include <stdio.h>
      int main()
      {
          
      int i,n=31;
          
      float total=0,t=0.5;
          for (
      i=0;i<n;i++)
          {
              
      total=total+t;
              
      t=t/2;
          }
          
      printf("%1.70f",total);

      test với n=100 với máy mình cũng 0.05s
      Chỗ này mình thấy cũng kì, dù n lớn cỡ nào thì time vẫn thấp, mình nghĩ khi n quá lớn, số quá bé ~0, chắc nó cho bằng 0 luôn nên tính nhanh zị ( đoán mò thôi )
      Cái bạn đoán mò chắc là ko đúng rùi! :brick: vì n quá lớn số quá bé thì nó vẫn thực hiện phép tính đó! Nó ko ảnh hưởng tới time đâu. Bạn cho n = 100 thì nó chỉ for 1 -> 100 nhanh như chớp
      Cái ảnh hưởng tới time trong bài này chủ yếu là cái for() kia nó chạy mấy vòng ấy. Nếu n = 10^9 thì for 1 -> 10^9 sẽ > 1s
      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


      • #18
        Originally posted by 09520500 View Post
        Cái bạn đoán mò chắc là ko đúng rùi! :brick: vì n quá lớn số quá bé thì nó vẫn thực hiện phép tính đó! Nó ko ảnh hưởng tới time đâu. Bạn cho n = 100 thì nó chỉ for 1 -> 100 nhanh như chớp
        Cái ảnh hưởng tới time trong bài này chủ yếu là cái for() kia nó chạy mấy vòng ấy. Nếu n = 10^9 thì for 1 -> 10^9 sẽ > 1s
        Với code của em thì đâu cần tới 10^9 anh, với n=31 thì vòng lặp t cuối cùng = 1/2^31, 2^31 cũng > 10^9 rồi :adore:

        Comment


        • #19
          Originally posted by 09520500 View Post
          - scanf("%d",&n); ---> số double %lf ko phải %d
          - printf("%lf",s); --> số float %f chứ ko phải %lf nhé

          Anh nghĩ bài này n chỉ cần kiểu long là oki rùi Và cho nó for(int i = 1; i <= log2(N); i++) là ok:happy:

          anh test xem có được không

          Comment


          • #20
            Originally posted by 11520132 View Post
            Với code của em thì đâu cần tới 10^9 anh, với n=31 thì vòng lặp t cuối cùng = 1/2^31, 2^31 cũng > 10^9 rồi :adore:
            code em thì đúng là cái số 2^31 rùi! Ý anh nói là cái chỗ for 1 -> n ấy :baffle: nếu n = 10^9 thì time > 1.0s
            Còn code em vs bài toán đưa ra là ok rùi vì cái bài đó để ko chặt chẽ lắm :brick:
            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


            • #21
              Originally posted by 10520549 View Post
              anh test xem có được không
              Đã test oki rùi mà! Có cần anh post lại code ko?? :boss:
              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


              • #22
                :adore: kết quả là (N-1)/N = (1<<K -1)/(1<<K) ... chưa tới 1 giây :salute:... chỉ có 1 vấn đề nho nhỏ là N quá lớn thì tràn số chắc luôn :stick:
                Last edited by 08520229; 07-07-2012, 18:27.
                Một khẩu súng giữ hai trời Nam Bắc,
                Một dấu chân in màu đất hai miền.

                ------------------------------------------------------

                Comment


                • #23
                  PHP Code:
                  #include<stdio.h>
                  #include<conio.h>
                  void main()
                  {
                      
                  unsigned long i;
                      
                  float s=0;
                      for(
                  i=2;i<=1000000000;i*=2)
                          
                  s+=1/(float)i;
                      
                  printf("%f",s);
                      
                  getch();

                  Comment

                  LHQC

                  Collapse
                  Working...
                  X