Announcement

Collapse
No announcement yet.

Cuộc thi Lập trinh thuật toán

Collapse
This topic is closed.
X
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 09520019
    replied
    Originally posted by 10520180 View Post
    Anh Châu thì pro rồi....em code chỉ được 30 phút... hichic bài 4 em làm dài hơn anh...
    Mình không nói đến pro hay không , nhưng mình học được 1 điều từ thi Olympic:
    Miễn sao Accepted là được rồi, code càng ngắn càng tốt để thời gian.....làm việc khác :P

    Leave a comment:


  • 10520180
    replied
    Anh Châu thì pro rồi....vừa code vừa nghĩ chỉ được 30 phút... hichic bài 4 em làm dài hơn anh... bài này em vét được bao nhiều thì vét hì hì
    Code:
       
    #include <iostream>
    
    using namespace std;
    
    long check(long n)
    {
        long s =0;
        while(n!=0)
        {
               s = s+n%10;
               n=n/10;   
        }
        return s;
    }
    
    int main()
    {
        long i,n,count=0;
        long sum = 0;
        cin >> n;
        for(i=1;i<=n;i++)
        {
                    sum = sum+check(i);
                    if(sum%3==0) count++;            
        }
        cout << count <<endl;
        return 0;
    }
    Bài một em có cùng suy nghĩ với anh...
    Code:
    #include <iostream>
    #include <math.h>
    
    using namespace std;
    
    int main()
    {
      long i=0,result=1;
      int n;
      cin >> n;
      while(i!=n)
      {  
            int d=2;
            result++;
            while(result%d!=0&&d<=sqrt(result))
             d++;
            if(d>sqrt(result))
               i++;  
      }
      cout << result << endl;
      return 0;
    }
    Còn 2 bài kia thì em nghĩ bạn nào làm cũng được hì hì
    Last edited by 10520180; 19-11-2011, 15:24.

    Leave a comment:


  • 09520019
    replied
    Đây là code 4 bài của mình, các bạn cho nhận xét. Thời gian làm bài: 6 phút 19 giây
    PHP Code:
    #include <iostream>
    using namespace std;

    int isprime(int n)
    {
        for (
    int i 2;<= n;++i)
            if (
    == 0) return 0;
        return 
    1;
    }
    int main()
    {
        
    int n,i,j;
        
    cin >> n;
        for (
    2,0;n;++i)
            if (
    isprime(i)) ++j;
        
    cout << (1) << endl;
        return 
    0;

    PHP Code:
    #include <iostream>
    using namespace std;

    int main()
    {
        
    long long int n,res;
        
    cin >> n;
        
    res = (* (1)) / 2;
        
    cout << res << endl;
        return 
    0;

    PHP Code:
    #include <iostream>
    using namespace std;

    int main()
    {
        
    long long int n;
        
    cin >> n;
        if (
    == 0cout << '0' << endl;
        else
        {
            while (
    10 == 0/= 10;
            while (
    n) {cout << 10/= 10;}
            
    cout << endl;
        }
        return 
    0;

    PHP Code:
    #include <iostream>
    using namespace std;

    int main()
    {
        
    int n,res;
        
    cin >> n;
        
    res * (3);
        if (
    == 2) ++res;
        
    cout << res << endl;
        return 
    0;

    How fast can you code ?
    Last edited by 09520019; 19-11-2011, 20:24.

    Leave a comment:


  • 09520019
    replied
    Originally posted by 11520132 View Post
    Ôi, lúc đầu ví dụ có cái này thì đỡ, trường hợp đặc biệt mà, hjx . Làm tưởng số 0 ở đầu thì không viết
    Nên mấy ngày trước mình mới bảo là mấy bạn chú ý tối ưu tùm lum tà la để rồi sai những thứ lắc nhắc )

    Leave a comment:


  • 11520132
    replied
    Originally posted by 10520272 View Post
    "0" thì vẫn in ra "0" bạn à.

    ------------------ ******************** ---------------------

    Mọi vấn đề đã xong. Giờ thì ngồi chờ kết quả thôi.
    Chúc tất cả may mắn (chúc mình luôn) =)).
    Ôi, lúc đầu ví dụ có cái này thì đỡ, trường hợp đặc biệt mà, hjx . Làm tưởng số 0 ở đầu thì không viết

    Leave a comment:


  • 10520272
    replied
    Originally posted by 11520132 View Post
    Ý em là chỉ số "0" thì không viết ra hay in ra "0"
    ( còn "10" thì in ra "1"
    "102" thì vẫn in ra "201" : hai cái này thì ok )
    "0" thì vẫn in ra "0" bạn à.

    ------------------ ******************** ---------------------

    Mọi vấn đề đã xong. Giờ thì ngồi chờ kết quả thôi.
    Chúc tất cả may mắn (chúc mình luôn) =)).
    Last edited by 10520272; 19-11-2011, 14:20.

    Leave a comment:


  • 09520019
    replied
    Originally posted by 11520132 View Post
    Ý em là chỉ số "0" thì không viết ra hay in ra "0"
    ( còn "10" thì in ra "1"
    "102" thì vẫn in ra "201" : hai cái này thì ok )
    input = 0 => output = 0;
    input = 10 => ouput = 1;
    input = 102 => output = 201;

    ==> OK

    Ý mình là có nhiều bạn
    Input = 1203 => Output = 321
    hoặc
    Input = 1203 => Output = 3

    Leave a comment:


  • 11520132
    replied
    Ý em là chỉ số "0" thì không viết ra hay in ra "0"
    ( còn "10" thì in ra "1"
    "102" thì vẫn in ra "201" : hai cái này thì ok )

    Leave a comment:


  • 10520272
    replied
    Originally posted by 11520132 View Post
    PHP Code:
    #include <stdio.h>
    int main()
    {
        
    long int n,i,j,k,l;
        
    //do scanf("%ld",&n);while ((n<=0)||(n>1000));
        
    n=450000;
        
    long int m[n];//Tạo mảng chứa các số nguyên tố từ 1 đến n
        
    m[0]=2;
        
    k=0;//k là chỉ số của mảng, bắt đầu =0
        
    for (i=3;k<=n-1;i++)//bắt đầu kiểm tra i có phải là số nguyên tố
            
    for (j=0;;j++)//Chạy j là chỉ số của mảng
            
    {
                
    l=(m[j]*m[j]);//tính l=bình phương giá trị đang xét của mảng
                
    if (l>i)//nếu l>i thì đó là số nguyên tố 
                
    {
                    
    k++;//tăng k để tăng giá trị chỉ số tiếp theo của mảng. 
                    
    m[k]=i;//lưu giá trị i vào mảng
                    
    break;
                }
                if (
    i%m[j]==0) break;//nếu i chia hết cho bất kì số nào trong mảng thì i không là nguyên tố
            
    }
        
    printf("So nguyen to thu %ld la: %ld",n,m[k-1]);

    Cảm ơn bạn, bây giờ thì mình đã hiểu.

    Leave a comment:


  • 11520132
    replied
    Originally posted by 10520272 View Post
    ủa, sao máy mình chạy không được code này bạn (kể cả n = 2). Mình debug thấy biến k chả bao giờ tăng cả --> lặp mãi không thôi. Mình cũng không hiểu rõ thuật toan của bạn lắm. Bạn vui lòng giải thích rõ hơn tí cho mình học tập với được không.
    Cảm ơn bạn.
    PHP Code:
    #include <stdio.h>
    int main()
    {
        
    long int n,i,j,k,l;
        
    //do scanf("%ld",&n);while ((n<=0)||(n>1000));
        
    n=450000;
        
    long int m[n];//Tạo mảng chứa các số nguyên tố từ 1 đến n
        
    m[0]=2;
        
    k=0;//k là chỉ số của mảng, bắt đầu =0
        
    for (i=3;k<=n-1;i++)//bắt đầu kiểm tra i có phải là số nguyên tố
            
    for (j=0;;j++)//Chạy j là chỉ số của mảng
            
    {
                
    l=(m[j]*m[j]);//tính l=bình phương giá trị đang xét của mảng
                
    if (l>i)//nếu l>i thì đó là số nguyên tố 
                
    {
                    
    k++;//tăng k để tăng giá trị chỉ số tiếp theo của mảng. 
                    
    m[k]=i;//lưu giá trị i vào mảng
                    
    break;
                }
                if (
    i%m[j]==0) break;//nếu i chia hết cho bất kì số nào trong mảng thì i không là nguyên tố
            
    }
        
    printf("So nguyen to thu %ld la: %ld",n,m[k-1]);

    Leave a comment:


  • 10520272
    replied
    Originally posted by 09520019 View Post
    Bài đó là 1 biến đổi khác của sàn số nguyên tố nhưng dùng ít bộ nhớ hơn
    ra thế, cảm ơn anh nhiều.

    Ý anh bug chỗ 1203 là sẽ chỉ ra số 3 thôi hả. Ghê thật, mình đọc mà mãi đến giờ mới hiểu.

    Leave a comment:


  • 09520019
    replied
    Originally posted by 10520272 View Post
    Dĩ nhiên, nhưng sàng thì cũng chỉ tới đc ~200k - 350k 1s thôi. 450k 1s thì đúng là nhanh quá (cũng có thể do máy), với lại thuật toan của bạn ấy nhìn hơi lạ nên em mới hỏi. Cái gì học được thì cứ học mà anh. Có mất gì đâu :x.
    Bài đó là 1 biến đổi khác của sàn số nguyên tố nhưng dùng ít bộ nhớ hơn

    Originally posted by 11520132 View Post
    THì số 0 không viết ra hay sao anh ?
    Có 1 vài bạn sẽ code là số 0 thì 0 viết ra.

    Originally posted by 11520214 View Post
    em nghĩ là nếu mình đổi công thức lại chút xíu thì đỡ phải xét thêm trường hợp n%3==2 res=(n*2)/3 ^^
    làm vậy sẽ rối khi có bug. Nhưng nhanh hơn thì không bao nhiêu (Khoảng 1 ~ 2 instruction gì đó)
    Last edited by 09520019; 19-11-2011, 14:04.

    Leave a comment:


  • 11520214
    replied
    Originally posted by 09520019 View Post
    Kết quả đúng không ?
    Output = 66666666666666666666666666666666

    Công thức nhìn có vẻ đúng 2*(N/3) + (N%3)/2

    N dư 1 thì N%3 / 2 = 0
    N dư 2 thì N%3 / 2 = 1

    OK => Accepted
    em nghĩ là nếu mình đổi công thức lại chút xíu thì đỡ phải xét thêm trường hợp n%3==2 res=(n*2)/3 ^^

    Leave a comment:


  • 11520132
    replied
    Originally posted by 09520019 View Post
    Bạn trẻ nào dùng if (n % 10 != 0) cout .... thì sẽ dính
    THì số 0 không viết ra hay sao anh ?

    Leave a comment:


  • 10520272
    replied
    Originally posted by 09520019 View Post
    Bạn tìm trên forum mình có code sàn số nguyên tố rồi. Mình không post code đó nữa
    Dĩ nhiên, nhưng sàng thì cũng chỉ tới đc ~200k - 350k 1s thôi. 450k 1s thì đúng là nhanh quá (cũng có thể do máy), với lại thuật toan của bạn ấy nhìn hơi lạ nên em mới hỏi. Cái gì học được thì cứ học mà anh. Có mất gì đâu :x.

    Leave a comment:

LHQC

Collapse
Working...
X