Thứ Ba

Suy nghĩ về Latex và Microsoft Word


Cái dễ dàng nhận thấy nhất là Word dễ sử dụng hơn Latex rất nhiều. Vì sản phẩm của Microsoft được xây dựng với phương châm "what you see is what you get" nên người dùng có thể thấy sản phẩm của họ ngay trong quá trình soạn thảo còn Latex phải qua công đoạn biên dịch.

Dùng Latex chúng ta sẽ chẳng cần quan tâm đến cách trình bày bởi vì mọi thứ sẽ đã được đặt sẵn từ trước, trong khi dùng Word ta cần phải chú ý tới nhiều thứ hơn như căn lề, tiêu đề, công thức toán, vị trí hình ảnh...

Nhưng không chỉ đơn giản như vậy, mới bắt đầu dùng Latex cá nhân tôi thấy nó khá rắc rối, bởi cách định dạng theo kiểu đánh dấu như HTML, muốn làm được một sản phẩm hoàn chỉnh phải biết nhiều "khá" phức tạp, trong khi đó với Word ta có thể thao tác trực tiếp lên sản phẩm của mình kết hợp với thị giác.
(updating)

Thứ Hai

Giải mã thông điệp

Đề: Viết chương trình hỗ trợ người ra đề phát sinh ra dãy thông điệp đã mã hóa và hỗ trợ người chơi kiểm tra kết quả giải mã.

Tính hàm số F(x)

Đề: Cho hàm F(x), x ≥ 0 được định nghĩa như sau:
   
    F(x) = x, nếu x ≤ 9
    
    F(x) = F(S(x)), nếu x > 9
    
    Trong đó S(x): tổng các chữ số của x.

Yêu cầu: Hãy viết chương trình tính F(n!), với 1 <= n <= 500.

Bài giải: 
Với 1  n ≤ 3 thì n! ≤ 9 => F(n!) = n!
Với  n = 4 thì n! > 9 nên F(n!) = F(S(n!)) = 6
Với  n = 5 thì n! > 9 nên F(n!) = F(S(n!)) = 3
Với  n  6 thì n! > 9 nên F(n!) = F(S(n!))
    Nếu F(n!) > 9 thì F(n!) có giá trị F(S(n!)) cứ như thế cho đến khi F(n!) ≤ 9 
    Ta có n! = 1x2x3x4x5x6x...x(n-1)xn = 6!x..x(n-1)xn
    Vì 6! chia hết cho 9 nên n! cũng chia hết cho 9
    Vì "một số chia hết cho 9 thì có tổng các chữ số chia hết cho 9" F(n!) luôn chia hết cho 9 mà F(n!) ≤ 9 nên F(n!) = 9

Mã nguồn:
  1. #include <stdio.h>
  2. void main()
  3. {
  4. int result, n;
  5. scanf_s("%d",&n);
  6. switch (n)
  7. {
  8. case 0:
  9. result=0;
  10. break;
  11. case 1: case 2: case 3:
  12. result=1;
  13. for (int i=1;i<=n;i++) result*=i;
  14. break;
  15. case 4:
  16. result=6;
  17. break;
  18. case 5:
  19. result=3;
  20. break;
  21. default:
  22. result=9;
  23. break;
  24. }
  25. printf("%d",result);
  26. }


Tính biểu thức Aver

Đề: Tính:
  

Trong đó Max, Min lần lượt là giá trị  lớn nhất, nhỏ nhất của n số  thực (được nhập vào từ thiết bị nhập chuẩn) a0, a1,..., an

Chỉ  dùng duy nhất 1 vòng lặp (for hoặc while), đề  xuất cách thức để  nhập n số  thực như trên  và  tính  giá  trị  của  biểu thức Aver,  xuất  kết  quả  tính  ra  thiết  bị  xuất  chuẩn.  Viết  chương trình để minh họa đề xuất đó.

Lưu ý: Phần này sinh viên chưa học về  mảng, như vậy vấn đề  chính của bài toán này là không thể dùng mảng để lưu giá trị của n số thực nói trên. Như vậy phải đề xuất một giải pháp “thông minh” để nhập và tính toán mà không đưa trước các số thực này vào mảng.

Bài giải: Biến đổi ta được:


                     

                                        
Đặt:

 


Ta có thể tính Sum1 và Sum2 một cách dễ dàng trong quá trình thực hiện vòng lặp nhập ai

Mã nguồn:
  1. #include <stdio.h>
  2. void main()
  3. {
  4. unsigned int n,i;
  5. double Aver,sum1,sum2,max,min,a0;
  6. scanf_s("%d",&n);
  7. scanf_s("%lf",&a0);
  8. max=a0;
  9. min=a0;
  10. sum1=a0*a0;
  11. sum2=a0;
  12. for (i=1;i<=n-1;i++)
  13. {
  14. double ai;
  15. scanf_s("%lf",&ai);
  16. sum1+=ai*ai;
  17. sum2+=ai;
  18. if (ai>max) max=ai;
  19. if (ai<min) min=ai;
  20. }
  21. Aver=2*sum1+1.0*n*(max*max+min*min)-2*(max+min)*sum2
  22. +1.0*n/2*(max-min)*(max-min);
  23. printf("%lf",Aver);
  24. }

Thứ Ba

Apple phát hành OS X 10.9.1: tiếp tục khắc phục những vấn đề với Gmail, sửa nhiều lỗi


Apple mới đây đã phát hành bản OS X 10.9.1, phiên bản update lớn đầu tiên kể từ khi hệ điều hành của hãng ra mắt vào tháng 10 năm nay. Trong bản nâng cấp lần này, Apple tiếp tục cải thiện việc sử dụng Gmail trong ứng dụng Mail của hệ thống, khắc phục lỗi với những người dùng đã tùy chỉnh lại cấu hình hộp thư Google cũng như tăng độ ổn định với tính năng Smart Mailbox và tìm kiếm của app. Bên cạnh đó, hãng cũng khắc phục vấn đề không thể update bộ app iLife và iWork với những người sử dụng ngôn ngữ hệ thống khác tiếng Anh, loại bỏ lỗi liên tục đòi hỏi cấp quyền sử dụng "keychain" cho một số "nội dung nội bộ". Safari cũng được nâng cấp lên bản 7.0.1 để sửa các lỗi liên quan đến VoiceOver, tự cập nhật những dòng tweet trong Shared Link thường xuyên hơn và tăng tính tương thích với một số website.

Ngay bây giờ bạn đã có thể tải về bản OS X 10.9.1 bằng cách vào  > Software Update... hoặc tải bộ cài thủ công ở đây.