Trang 2 trên tổng số 2 Đầu tiênĐầu tiên 12
Từ 11 tới 18 trên tổng số 18 kết quả

Đề tài: Tản mạn về NNLT

  1. #11
    Ngày gia nhập
    09 2016
    Bài viết
    1,028

    Mặc định Tản mạn về NNLT

    Thử so sánh MessageBoxW
    http://stackoverflow.com/questions/27730513/display-a-variable-in-messageboxw-c
    https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx

    với MessageBox.Show
    https://msdn.microsoft.com/en-us/lib...v=vs.110).aspx

    Phọt mô xa 2017

  2. #12
    Ngày gia nhập
    09 2016
    Bài viết
    1,028

    Thấy có đề tài hay hay: thời gian chạy ra kết quả 1s
    Chúng ta tổ chức thi tốc độ xem thử thời gian chạy nhanh nhất là bao nhiêu nha, đồng ý không !
    Sửa lại fix cố định a=1, b= 10000000 (10^7).

    Trích dẫn Nguyên bản được gửi bởi bunxin Xem bài viết
    Mình có mấy bài tập này đã làm thử nhưng không đạt yêu cầu, do thời gian yêu cầu làm việc cho ra kết quả chỉ trong 1s, mà bài của mình thì nếu số bé thì 1s được còn nếu mà lên tới 10^7 thì không được. Các bạn ở diễn đàn có thể cho mình một thuật toán để giải mấy bài này được không. Nội dung bài tập như sau:
    Bài 1: Yêu cầu:
    - thời gian chạy ra kết quả 1s
    Tìm có bao nhiêu số trong khoảng a,b mà số đó bằng tích của 3 số nguyên tố, (1<=a<=b<=10^7)
    ví dụ a= 10 b =20 có bao nhiêu số mà = tích của 3 số nguyên tố trong khoảng 10 -20
    đáp án có 3 : 12, 18 , 20
    12 = 2*2*3
    18=2*3*3
    20=2*2*5

    Bài 2:
    -Yêu cầu cũng trong 1 s cho ra kết quả
    Có một người chơi bài ban đầu anh ta có 0 đồng, yêu cầu mỗi lượt đặt phải tối thiểu 1 đồng, lần đầu anh ta đặt 1 đồng
    nếu thua anh ta sẽ tăng gấp đôi số tiền đặt lần tiếp theo, nếu thắng anh ta sẽ giảm xuống 1 đồng. Và ở lần đặt cuối anh ta chỉ đặt 1 đồng. Tính số tiền anh ta nhận được sau khi kết thúc cuộc chơi
    Nhập số lần chơi là n; 1<=n<=10^7
    nhập thắng là 1 thua la 0
    ví dụ
    5 - n( số lượt chới0
    1 0 0 1 1 ( 1- thắng , 0 thua) 1
    lần 1 thắng anh ta sẽ có 1 đồng, vì tối thiểu đặt cược là 1 đồng lên lần 2 anh thua thì anh ta sẽ có 0 đồng, vì thua anh ta tăng số tiền đặt cược lên gấp đôi tức ở lần 3 số tiền đặt cược là 2, anh ta thua ở lần đặt cược thứ 3 anh ta sẽ -2 đồng, ở lần thứ 4 anh ta tăng gấp đôi tiếp là 4 đồng anh ta thắng trừ đi số tiền âm anh ta sẽ có +2 đồng, ở lần cuối theo quy tắc anh ta chỉ đặt 1 đồng và khi thắng anh ta sẽ có tất cả là 3 đồng

    Bài 3: Hái nấm
    cho n ngọn đồi t thời gian, số nấm trên đồi là số bất kỳ do người nhập vào. Di chuyển giữa các ngọn đồi là 1 giờ, số nấm trên ngọn đồi có thể thu hoạch lại sau 2 giờ. Tìm số lượng nấm thu hoạch nhiều nhất sau t thời gian
    VD:
    5 4 ( 5 la so ngon doi , 4 la thời gian 4 tiếng)
    3 4 3 5 1 ( số nấm trên từng ngọn đồi, đồi 1 có 3 cây nấm, đồi 2 có 4, đồi 3 có 3, đồi 4 có 5, đồi 5 có 1)
    đáp án 18
    phương án thu hoạch nhiều nhất là đồi 1 -2 -3 -4 -3
    ...
    Phương án tham khảo (tôi tách ra để dễ đọc, không có ý ăn cắp, ăn cướp bản quyền)
    *bài 1
    Visual C++ Code:
    1. #include <iostream>
    2. #include <cmath>
    3. using namespace std;
    4.  
    5. bool tinhtoan(int n)
    6. {
    7.     int count = 0;
    8.     while (n % 2 == 0)
    9.     {
    10.         if (++count > 3) return false;
    11.         n = n / 2;
    12.     }
    13.  
    14.     for (int i = 3; i <=sqrt(n); i=i+2)
    15.     {
    16.         while (n%i == 0)
    17.         {
    18.             if (++count > 3) return false;
    19.             n = n / i;
    20.         }
    21.     }
    22.  
    23.     if (n > 2) ++count;
    24.     return count == 3;
    25. }
    26. int main(void)
    27. {
    28.     int count = 0;
    29.     int a, b;
    30.     cin >> a >> b;
    31.     for (size_t i = a; i <= b; i++)
    32.     {
    33.         if (tinhtoan(i))
    34.            
    35.             count++;
    36.        
    37.     }
    38.     cout << count << endl;
    39.     return 0;
    40. }

    *bài 2
    Visual C++ Code:
    1. #include <stdio.h>
    2. #include <string>
    3. #include <iostream>
    4. using namespace std;
    5. int n;
    6. int *a;// a luu thong tin thang thua
    7. void input()
    8. {
    9.     for (int i = 1; i <= n; i++)
    10.     {
    11.         cin >> a[i];
    12.     }
    13. }
    14. void money()
    15. {
    16.     int money =0; // tien ban dau
    17.     int stavka = 1;// tien dat cuoc
    18.     if (n == 1){// neu choi 1 lan
    19.         if (a[1] == 1)
    20.         {
    21.             money = money + stavka;
    22.            
    23.         }
    24.         else
    25.         {
    26.             money = money - stavka;
    27.            
    28.         }
    29.     }
    30.     else{// choi nhieu lan
    31.         if (a[1] == 1)
    32.         {
    33.             money = money + stavka;
    34.         }
    35.         else
    36.         {
    37.             money = money - stavka;
    38.             stavka = stavka * 2;
    39.         }
    40.         for (int i = 2; i <= (n-1); i++)
    41.         {
    42.             if (a[i] == 1)
    43.             {
    44.                 money = money + stavka;
    45.                 stavka = stavka - 1;
    46.             }
    47.             else
    48.             {
    49.                 money = money - stavka;
    50.                 stavka = stavka * 2;
    51.             }
    52.         }
    53.         if (a[n] == 1)
    54.         {
    55.             stavka = 1;
    56.             money = money + stavka;
    57.         }
    58.         else
    59.         {
    60.             money = money - stavka;
    61.         }
    62.     }
    63.     cout << money << endl;
    64. }
    65. int main()
    66. {
    67.     bool k = true;
    68.     cin >> n;
    69.     if (n < 1 || n>1000) cout << "error!" << endl;
    70.     else{
    71.     a = new int[n];
    72.     if (k = true)
    73.     {
    74.         input();
    75.         money();
    76.     }
    77.     }
    78.     return 0;
    79. }

    Phọt đâu xa 2017
    Đã được chỉnh sửa lần cuối bởi MHoang : 11-04-2017 lúc 04:51 PM.

  3. #13
    Ngày gia nhập
    08 2017
    Bài viết
    1,658

    C++ Code:
    1. #include <iostream>
    2. #include <cmath>
    3. #include <ctime>
    4. using namespace std;
    5.  
    6. bool tinhtoan(int n){
    7.     int count = 0;
    8.     while (n % 2 == 0){
    9.         if (++count > 3) return false;
    10.         n = n / 2;
    11.     }
    12.  
    13.     for (int i = 3; i <= sqrt(n); i=i+2)
    14.         while (n % i == 0){
    15.             if (++count > 3) return false;
    16.             n = n / i;
    17.         }
    18.  
    19.     if (n > 2) ++count;
    20.     return count == 3;
    21. }
    22. int main(void){
    23.     int count = 0;
    24.     //int a, b; cin >> a >> b;
    25.     int a = 1, b = 10000000;
    26.    
    27.     time_t tg; time(&tg);
    28.     cout << "Please waiting ...\n";
    29.    
    30.     for (int i = a; i <= b; i++)
    31.         if (tinhtoan(i))
    32.             count++;
    33.     cout << count << endl;
    34.    
    35.     time_t end; time(&end);
    36.     double seconds = difftime(end, tg);
    37.     cout << seconds << " seconds\n";
    38.    
    39.     return 0;
    40. }


  4. #14
    Ngày gia nhập
    08 2017
    Bài viết
    1,658

    Tăng tốc độ lên (trên cùng một PC - máy tính cá nhân), thời gian thực hiện xuống 9 - 10 giây, tăng 4 lần không phải là khó



    Thời gian 1 giây, hy vọng xiêu máy tính làm được, như các kỹ sư ở RFNC-VNIIEF đã làm.

  5. #15
    Ngày gia nhập
    08 2017
    Bài viết
    1,658

    c/c++ thât là rắc rối (#32)
    http://diendan.congdongcviet.com/threads/t367427::dung-trinh-bien-dich-nao-cho-ngon-ngu-c-cpp.cpp/page4/
    , nên cần dài dòng, lòng vòng cho đời khôn ra ..

    Với mã nguồn menu2.cpp
    C Code:
    1. #include <stdio.h>
    2. #include <stdlib.h>
    3.  
    4. char Menu(){
    5.     system("cls");
    6.     printf("\n\t====== CHUONG TRINH QUAN LY SINH VIEN ======\n");
    7.     printf("\t\t\t1. Them Moi Ho So\n");
    8.     printf("\t\t\t2. In Danh Sach\n");
    9.     printf("\t\t\t3. Sap Xep\n");
    10.     printf("\t\t\t4. Tim kiem\n");
    11.     printf("\t\t\t5. Thong Ke\n");
    12.     printf("\t\t\t6. Thoat\n");
    13.     //return
    14.         getchar();
    15. }
    16.  
    17. int main (){
    18.     char mn;
    19.     do{
    20.         mn = Menu();
    21.         switch(mn){
    22.             case '1':  
    23.                 printf("NhapHoSo(sv, &n);"); //NhapHoSo(sv, &n);
    24.                 break;
    25.             case '2':  
    26.                 printf("InDanhSach(sv, n);"); //InDanhSach(sv, n);
    27.                 break;
    28.             case '3':  
    29.                 printf("SapXep(sv, n);"); //SapXep(sv, n);
    30.                 break;
    31.             case '4':  
    32.                 printf("TimKiem();"); //TimKiem();
    33.                 break;
    34.             case '5':  
    35.                 printf("ThongKe();"); //ThongKe();
    36.                 break;
    37.             case '6':  
    38.                 exit(0);
    39.                 break;
    40.             default:
    41.                 printf("menu is %c (char),  is %d (number) !\n", mn, mn);
    42.                 printf("NHAP SAI! MOI NHAP LAI!");
    43.                 //break;
    44.         }
    45.         //system("pause");
    46.         printf("\nPress any key to continue . . .");
    47.         system("pause>nul");
    48.         fflush(stdin);
    49.     } while(mn != '6');
    50.     //return 0;
    51. }

    1 - biên dịch với gcc/g++ (MinGW) OK

    2 - biên dịch với bcc32c (Borland/Embarcadero) nó cảnh báo:
    menu2.cpp:15:1: warning: control reaches end of non-void function [-Wreturn-type]
    và khi chạy giá trị mm luôn là 0

    3 - biên dịch với vc (Vs2010)
    cl /MD menu2.cpp /Fevc.exe
    nó báo lỗi
    menu2.cpp(15) : error C4716: 'Menu' : must return a value

    Tóm lại do cái không chuẩn mà ra; bỏ comment dòng 13 là iên chuyện

  6. #16
    Ngày gia nhập
    08 2017
    Bài viết
    1,658

    Mặc định Tản mạn về NNLT

    Như trên, trong một ngữ cảnh (TBD - biên dịch) chuyện đúng sai chỉ là tương đối

  7. #17
    Ngày gia nhập
    08 2017
    Bài viết
    1,658

    Khi cần viết CT khác, có thể copy / paste và sửa cho phù hợp

  8. #18
    Ngày gia nhập
    08 2017
    Bài viết
    1,658

    Không nhất thiết mọi cốt kiếc phải chuẩn tắc, tường minh như sách nói if else, ví dụ:
    C Code:
    1.     if(m_Bool)
    2.         return do_True();
    3.     /*else*/
    4.     return do_False();

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