Archive | Thuật toán

[codeforces] Round #204 (Div. 2) A. Jeff and Digits

Đề bài: http://codeforces.com/contest/352/problem/A time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Jeff’s got n cards, each card contains either digit 0, or digit 5. Jeff can choose several cards and put them in a line so that he gets some number. What is the largest possible number divisible by 90 Jeff can make from the cards he’s got? Jeff must make the number without leading […]

[Thuật toán] Tính căn bậc 2

Trong một buổi phỏng vấn kỹ thuật tại công ty XXX, một lập trình viên “lão thành” chịu trách nhiệm phỏng vấn Tèo hỏi Tèo một câu: “Hãy viết chương trình C tính căn bậc 2 của số nguyên x” Tèo cười thầm và tự nghĩ “Công ty công nghệ hàng đầu Việt Nam gì mà hỏi một câu dễ vậy. Nó đâu phải là thằng mới học lập trình!” Và Tèo trong chớp mắt […]

[Thuật toán] Tính bình phương của 1 số gồm n số 1

Đề bài: Cho số S = 111…11 (n chữ số 1, hệ thập phân), tính S^2. Input – Dòng đầu tiên: số lượng test k (k<=40). – k dòng tiếp, mỗi dòng ghi số n – số lượng chữ số 1 của S. (1 <= n <= 1000000) Output – Với mỗi test ghi kết quả trên 1 dòng. Example Input: 2 1 2 Output: 1 121 Cách giải: Ta thấy KQ có dạng đối […]

[Thuật toán] Tính các hàm lượng giác

Công thức tính sin(x) và các hàm lượng giác khác như sau: VD tính sin(x) , x tính theo radian Có thể do kiểu dữ liệu hoặc một số lý do khác mà chỉ chính xác được đến -27<=x<=27 với x tính theo radian. Ở code trên chúng ta không tính hàm x^(2i+1) và (2i+1)! riêng ra mà tính liền vào temp tức là tính temp = x^(2i+1) / (2i+1)! để tránh tràn số với […]

[Thuật toán] Liệt kê hoán vị

Ta sẽ lập chương trình liệt kê các hoán vị của {1, 2, …, n} theo thứ tự từ điển. Ví dụ với n = 3, ta phải liệt kê đủ 6 hoán vị: 1   2   3 1   3   2 2   1   3 2   3   1 3   1   2 3   2   1 Như vậy hoán vị đầu tiên sẽ là 〈1, 2, …, n〉. Hoán vị cuối cùng là 〈n, n-1, …, 1〉. Hoán vị […]

[Thuật toán] BÀI TOÁN GETSTRING

Cho xâu S có độ dài không quá 10^5, và tập A có n phần tử(n≤100) gồm các kí tự trong bảng mã ASCII, phân biệt chữ hoa và chữ thường. Hãy tìm chuỗi con liên tiếp trong S sao cho chứa đầy đủ các kí tự trong tập A và có độ dài ngắn nhất. (Chuỗi con liên tiếp là chuỗi có các ký tự theo thứ tự trong A và có thể cách […]

[Spoj] VMTEST – Thử máy

Đề bài: Spoj – VMTEST Đơn giản mỗi lần đọc chuỗi kiểm tra xem s[1] có là ‘?’ không? và tiếp tục làm: Nếu s[1] là chữ cái thì duyệt hết s, nếu gặp s[i] không phải là chữ cái thì thoát và in “Error !”. Nếu s[1] là số hoặc ‘-‘ hoặc ‘.’ thì copy tưng cụm (các cụm từ cách nhau bằng dấu cách) đổi ra số, nếu đổi được thì cộng vào […]

[Thuật toán] Ma phương – Magic square

Trong toán vui, một ma trận kì ảo bậc n (còn gọi là ma phương hay hình vuông ma thuật) là một cách sắp xếp n² số, thường là các số nguyên phân biệt, trong một bảng vuông sao cho tổng n số trên mỗi hàng, cột, và đường chéo đều bằng nha Ma trận kì ảo chuẩn chứa các số nguyên từ 1 đến n². Tồn tại ma trận kì ảo chuẩn cho mọi […]

[Thuật toán] Tính giá trị biểu thức

Phương pháp nghịch đảo Balan hoặc cây biểu thức sẽ làm cho các bạn mới học lúng túng. Đây là một phương cực kỳ đơn giản các bạn có thể đọc hiểu và vận dụng được Biểu thức đơn giản bao gồm 2 phép toán + và * Vd: 2*5+3+4*3+2 Cách tính: Nếu trong biểu thức có phép + thì lấy phần biểu thức đầu + phần biểu thức cuối Ngược lại nếu trong biểu […]

[Thuật toán – Java] Tính giá trị của biểu thức hậu tố – Calculate value of the postfix Equation

Việc tính giá trị của một biểu thức toán học ở dạng trung tố trong máy tính thông thường sẽ được chuyển sang dạng ký pháp nghịch đảo Ba Lan (hậu tố) để việc tính toán được dễ dàng. Bạn có thể xem lại thuật toán chuyển đổi từ trung tố sang hậu tố trong bài viết  của tôi. Trong bài viết này, tôi sẽ trình bày phương pháp tính giá trị của một biểu […]