Domino (tính toán cơ bản - thi hsg)

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Bạn được cung cấp một bảng hình chữ nhật có kích thước M × N hình vuông đơn vị. Ngoài ra, bạn được cung cấp một số lượng không giới hạn các mảnh domino tiêu chuẩn kích thước 2 × 1. Bạn được phép xoay các mảnh domino. Bạn được yêu cầu đặt càng nhiều domino càng tốt trên bảng để đáp ứng các điều kiện sau:

  1. Mỗi domino hoàn toàn bao gồm hai hình vuông đơn vị.

  2. Không có hai domino trùng lên nhau.

  3. Mỗi domino nằm hoàn toàn bên trong bảng. Nó được phép chạm vào các cạnh của bảng.

Tìm số lượng domino tối đa thỏa mãn điều kiện trên.


Input: Trong một dòng duy nhất, bạn được cung cấp hai số nguyên M và N - kích thước bảng theo hình vuông (1 ≤ M ≤ N<= 16)


Output: Xuất ra một số - số lượng domino tối đa, có thể được đặt.


Ví dụ:

Input 01:
3 3
Output 01:
4
Input 02:
2 4
Output 02:
4

Tổng tất cả các cạnh của hình hộp chữ nhật (tính toán cơ bản - thi hsg)

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho biết diện tích của ba mặt có chung đỉnh của hình hộp chữ nhật, tính tổng độ dài 12 cạnh của hình hộp chữ nhật đó.


Input: 3 số nguyên dương không vượt quá 10^4 là diện tích của ba mặt có chung đỉnh.


Output: Tổng của tất cả các cạnh của hình hộp chữ nhật.


Ví dụ:

Input:
4 6 6
Output:
28

Lát gạch quảng trường nhà hát

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Quảng trường Nhà hát ở thủ đô Berland có hình chữ nhật với kích thước n × m mét. Nhân dịp kỷ niệm thành phố, một quyết định đã được đưa ra để lát Quảng trường bằng những viên bằng đá granit vuông. Mỗi viên đá hình vuông có kích thước a × a. Số lượng viên đá ít nhất cần thiết để lát Quảng trường là bao nhiêu? Nó được phép che phủ bề mặt lớn hơn Quảng trường Nhà hát. Nó không được phép phá vỡ các viên đá. Các cạnh của viên đá phải song song với các cạnh của Quảng trường.


Input: Đầu vào chứa ba số nguyên dương trong dòng đầu tiên: n, m và a (1 ≤ n, m, a ≤ 10^9).

Output: Viết số lượng viên đá cần thiết để lát kín quảng trường.


Ví dụ:

Input:
6 6 4
Output:
4

Mua quà tặng (tính toán cơ bản - thi hsg)

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Hôm nay Patrick chờ đợi một chuyến thăm từ người bạn SpPal của mình. Để chuẩn bị cho chuyến thăm, Patrick cần mua một số quà tặng ở hai cửa hàng gần nhà. Có một con đường dài d1 mét giữa nhà anh ta và cửa hàng đầu tiên và một con đường dài d2 mét giữa nhà anh ta và cửa hàng thứ hai. Ngoài ra, có một con đường dài d3 kết nối trực tiếp hai cửa hàng này với nhau. Giúp Patrick tính toán khoảng cách tối thiểu mà anh ta cần đi bộ để đến cả hai cửa hàng và trở về nhà. Patrick luôn bắt đầu tại nhà của mình. Anh ta nên ghé thăm cả hai cửa hàng chỉ di chuyển dọc theo ba con đường hiện có và trở về nhà của anh ta. Anh ta không ngại ghé thăm cùng một cửa hàng hoặc đi qua cùng một con đường nhiều lần. Mục tiêu duy nhất là giảm thiểu tổng quãng đường đã đi.


Input: Dòng đầu tiên của đầu vào chứa ba số nguyên d1, d2, d3 (1 <=d1, d2, d3<= 10^8) - độ dài của các đường dẫn. d1 là chiều dài của con đường nối nhà Patrick và cửa hàng đầu tiên; d2 là chiều dài của con đường nối nhà Patrick và cửa hàng thứ hai; d3 là chiều dài của đường dẫn kết nối cả hai cửa hàng.

Output: In khoảng cách tối thiểu mà Patrick sẽ phải đi bộ để ghé thăm cả hai cửa hàng và trở về


Ví dụ:

Input:
10 20 30
Output:
60

Người lính (tính toán cơ bản - thi hsg)

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Một người lính muốn mua w quả chuối trong cửa hàng. Anh ta phải trả k đô la cho quả chuối đầu tiên, 2k đô la cho quả thứ hai và cứ thế (nói cách khác, anh ta phải trả i * k đô la cho quả chuối thứ i). Anh ta có n đô la. Anh ta phải vay của bạn mình bao nhiêu đô la để đủ số chuối anh ta cần?


Input: Dòng đầu tiên chứa ba số nguyên dương k, n, w (1 ≤ k, w ≤ 1000, 0 ≤n≤10^9) là chi phí của quả chuối đầu tiên, số đô la ban đầu mà người lính có và số chuối anh ta muốn.

Output: Xuất ra một số nguyên - số đô la mà người lính phải vay từ bạn của mình. Nếu anh ta không phải vay tiền, đầu ra là 0.


Ví dụ:

Input:
3 17 4
Output:
13

Trăm trâu trăm cỏ (vòng lặp while)

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Trăm trâu trăm cỏ, trâu đứng ăn 5, trâu nằm ăn 3, ba trâu già ăn 1. Viết chương trình hiển thị số trâu theo từng loại.


Output:
12 4 84
8 11 81
4 18 78

Giải thích:

Có 3 phương án

  1. Có 12 trâu đứng, có 4 trâu nằm và có 84 trâu già
  2. Có 8 trâu đứng, 11 trâu nằm và 81 trâu già
  3. Có 4 trâu dứng, 18 trâu nằm và 78 trâu già

Chọn trưởng nhóm

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Fafa sở hữu một công ty làm việc trên các dự án lớn. Có n nhân viên trong công ty của Fafa. Bất cứ khi nào công ty có một dự án mới để bắt đầu làm việc, Fafa phải phân chia nhiệm vụ của dự án này cho tất cả các nhân viên. Fafa thấy làm điều này mỗi lần là rất mệt mỏi đối với anh ta. Vì vậy, anh quyết định chọn những nhân viên L giỏi nhất trong công ty của mình làm trưởng nhóm. Bất cứ khi nào có một dự án mới, Fafa sẽ phân chia nhiệm vụ cho chỉ các trưởng nhóm và mỗi trưởng nhóm sẽ chịu trách nhiệm về một số nhân viên tích cực để giao cho họ các nhiệm vụ. Để làm cho quá trình này công bằng cho các trưởng nhóm, mỗi người trong số họ phải chịu trách nhiệm cho cùng một số lượng nhân viên. Hơn nữa, mỗi nhân viên, người không phải là trưởng nhóm, phải chịu trách nhiệm của chính xác một trưởng nhóm và không có trưởng nhóm nào chịu trách nhiệm cho một trưởng nhóm khác. Dựa vào số lượng nhân viên n, hãy tìm xem có bao nhiêu cách Fafa có thể chọn số lượng trưởng nhóm L theo cách có thể phân chia nhân viên giữa họ một cách đồng đều.

Input: Đầu vào bao gồm một dòng duy nhất chứa số nguyên dương n (2<= n<= 10^5) - số lượng nhân viên trong công ty của Fafa.

Output: In một số nguyên duy nhất đại diện cho câu trả lời cho vấn đề.


Ví dụ:

Input:
10
Output:
3

Di chuyển chip

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Bạn được cung cấp n chip trên một dòng số. Chip thứ i được đặt tại tọa độ nguyên xi. Một số chip có thể có tọa độ bằng nhau. Bạn có thể thực hiện một trong hai loại di chuyển sau bất kỳ số lần (có thể là 0) trên bất kỳ chip nào:

Di chuyển chip i sang trái 2 đơn vị hoặc 2 đơn vị sang phải miễn phí (nghĩa là thay thế tọa độ xi hiện tại bằng xi -2 hoặc bằng xi + 2);

Di chuyển chip i sang trái hoặc sang phải 1 đơn vị và trả một xu cho lần di chuyển này (tức là thay thế tọa độ hiện tại xi bằng xi-1 hoặc bằng xi + 1).

Lưu ý rằng được phép di chuyển chip sang bất kỳ tọa độ nguyên nào, bao gồm âm và 0.

Nhiệm vụ của bạn là tìm ra tổng số xu tối thiểu cần thiết để di chuyển tất cả n chip vào cùng một tọa độ (nghĩa là tất cả xi phải bằng nhau sau một số lần di chuyển).


Input: Dòng đầu tiên của đầu vào chứa một số nguyên n (1≤n≤100) - số lượng chip. Dòng thứ hai của đầu vào chứa n số nguyên x1, x2,…, xn (1≤xi≤10^9), trong đó xi là tọa độ của chip thứ i.

Output: In một số nguyên - tổng số xu tối thiểu cần thiết để di chuyển tất cả n chip đến cùng tọa độ.


Ví dụ:

Input:
3
1 2 3
Output:
1

Máy tính điên

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

ZS the Coder đang mã hóa trên một máy tính điên. Nếu bạn không gõ một từ trong một giây liên tiếp, mọi thứ bạn gõ sẽ biến mất! Nếu bạn gõ một từ ở giây thứ a và sau đó là từ tiếp theo ở giây b, thì nếu b - a ≤ c, chỉ từ mới được thêm vào các từ khác trên màn hình. Nếu b - a > c, thì mọi thứ trên màn hình sẽ biến mất và sau đó từ bạn đã gõ sẽ xuất hiện trên màn hình.

Ví dụ: nếu c = 5 và bạn đã gõ các từ ở giây 1, 3, 8, 14, 19, 20 thì ở giây thứ 8 sẽ có 3 từ trên màn hình. Sau đó, mọi thứ biến mất vào giây thứ 13 vì không có gì được gõ. Ở giây 14 và 19, hai từ khác được gõ và cuối cùng, ở 20 giây thứ hai, một từ nữa được gõ và tổng cộng 3 từ vẫn còn trên màn hình

Bạn được cung cấp thời gian khi ZS gõ các từ. Xác định có bao nhiêu từ vẫn còn trên màn hình sau khi anh ta gõ xong mọi thứ.


Input: Dòng đầu tiên chứa hai số nguyên n và c (1 ≤ n ≤ 100 000, 1 <=c <=10^9) - số lượng từ ZS mà Coder đã nhập và độ trễ của máy tính điên tương ứng. Dòng tiếp theo chứa n số nguyên t1, t2, ..., tn (1 ≤ t1 <t2 <... <tn ≤ 10^9), trong đó ti biểu thị số thứ hai khi ZS gõ từ thứ i.</p>

Output: In một số nguyên dương duy nhất, số lượng từ còn lại trên màn hình sau khi tất cả n từ được gõ.


Ví dụ:

Input:
6 5
1 3 8 14 19 20
Output:
3

Vẽ hình chứa hình thoi

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Viết chương trình cho phép nhập n và in ra hình chứa hình thoi tương ứng.


INTPUT:
5
OUTPUT:
**********
****  ****
***    ***
**      **
*        *
**      **
***    ***
****  ****
**********

Phi hàm Euler 2

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho số nguyên dương n, nhiệm vụ của bạn là in ra 𝜑(i) với 1≤i≤n. Trong đó 𝜑(i) là phi hàm Euler của i.

Input: Dòng đầu tiên là số lượng bộ test T. (1≤T≤100). Mỗi test case là một số nguyên dương n (1≤n≤10^6).

Output: In kết quả mỗi test case trên 1 dòng.


Input:
1
10
Output:
1 1 2 2 4 2 6 4 6 4

Tam giác Pascal (6)

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho số nguyên dương n (1≤n≤30). In ra tam giác Pascal với n dòng

Input: Một số nguyên dương n

Output: In ra tam giác Pascal với n dòng. Mỗi dòng cách nhau bằng dấu cách và đúng định dạng tam giác.


Ví dụ:

Input:
5
Output:
1  
1 1  
1 2 1  
1 3 3 1  
1 4 6 4 1

Ma trận xoắn ốc (6)

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Mô tả: Cho số nguyên dương n (1≤n≤20), in ra ma trận kích thước n×n với các số từ 1 đến n^2 theo dạng xoắn ốc theo chiều kim đồng hồ.

Input: Một số nguyên n

Output: n dòng, mỗi dòng gồm n số cách nhau bởi khoảng trắng.

Ví dụ:

Input:
3
Output:
1 2 3  
8 9 4  
7 6 5

Giai thừa chia dư (quy hoạch động)

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Đề bài rất đơn giản, bạn hãy tính N! chia dư cho (10^9 + 7).


Đầu vào:

Dòng 1 là số bộ test T

T dòng tiếp theo mỗi dòng là 1 số nguyên không âm N


Ràng buộc:

1<=T<=10000

0<=N<=10^6


Đầu ra: Đưa ra kết quả của mỗi test trên 1 dòng


Input:
5
1
2
3
4
5
Output:
1
2
6
24
120

Tính tổng các số và chia dư (đồng dư)

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho N số nguyên, bạn hãy tính tổng các số này và chia dư tổng cho ~10^9 + 7 (1000000007)~

(Lưu ý: Mỗi số trong mảng được nhập ở một dòng)


Định dạng đầu vào:

• Dòng 1 là N: số lượng số nguyên

• Dòng 2 gồm N số nguyên cách nhau 1 khoảng trắng


Ràng buộc:

~1 \leq N \leq 10^5~

Các số là nguyên dương không quá 1~0^{16}~


Định dạng đầu ra: In ra đáp án của bài toán


Input:
5
534 7 669 826 610
Output:
2646

Tính n giai thừa và chia dư cho 10^9 + 7 (đồng dư)

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Bạn hãy tính N giai thừa và chia dư cho 10^9 + 7


Ràng buộc: ~1 \leq N \leq 10^6~


Input 01:
5
Output 01:
120
Input 02:
100
Output 02:
437918130

Phép chia dư (xâu ký tự - chuỗi ký tự)

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho 2 số N và M, hãy tìm số dư khi chia N cho M. Để tính số dư của 2 số N và M, trong trường hợp N là 1 số nguyên lớn, ta có thế dùng kiến thức toán học sau. Ví dụ bạn có N = 12345 và M = 3, bạn có thể duyệt từng chữ số của N từ trái qua phải và duy trì số dư r = 0 ban đầu, khi gặp số 1, r = r * 10 + 1, sau đó lấy r % 3 = 1, khi gặp 2, r = r * 10 + 2 = 12, r % 3 = O,... tương tự như vậy cho tới khi gặp số cuối cùng của N, giá trị của r khi đó chính là số dư khi chia N cho M


Ràng buộc: N có không quá 1000 chữ số; M là 1 số nguyên 64 bit


Dòng đầu tiên là số nguyên dương N. Dòng thứ 2 là số nguyên dương M


In ra kết quả của bài toán


Input:
330679460715311507542330042907584061562240887021233857757277218125606927281270180531182038900800978073497374454836566743377505594904632848825152841886908750331356498961889280542914939799031248188994530520348284408526650762938562239031535495222937526264692464562634692207015483396201500797489580352852784598744255101464231146514589223153821533638674181894270625068338371026309043199729843644081432642072639241486973301791778404684290407546511642867326414059842209898930941589177651423429924314638408205707723833380738893975928001187847837003964656445970653012449940511351014667855169903985819999999999998156
9999999999998156
Output:
5551041562357936

Tính a mũ b chia dư cho c (đồng dư)

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Tính a mũ b chia dư cho c với a, b, c là các số nguyên dương


Ràng buộc: ~1 \leq a, c \leq 10^4~; ~1 \leq b \leq 10^6~


Input 01:
2 1000000 10

Nhập như trên tức là 2 mũ 1000000 chia dư cho 10

Output 01:
6

Giải thích: 2 mũ 1000000 chia dư cho 10 kết quả sẽ bằng 6

Input 02:
5 999999 10
Output 02:
5