Bài 6: Tỡm UCLN của n số nguyờn dương: - Tệp b6.inp gồm 2 dũng: Dũng đầu tiờn chứa số nguyờn dương n, dũng thứ 2 chứa n số nguyờn dương - Tệp b6.out chứa 1 số nguyờn là UCLN của n số ngu
Trang 1Bài 1: Tệp ‘sn.inp’ gồm 1 dãy sô nguyên, mỗi số cách nhau bằng 1 dấu cách, mỗi số có giá trị tuyệt đối không vượt quá 1000 Viết chương trình kiểm tra xem trong dãy đó số nào là số nguyên tố và đưa kết quả ra tệp ‘so.out’
VD: Tệp ‘so.inp’:
Tệp ‘so.out’:
Bài 2: Tính tổng các chữ số của số nguyên:
- tệp b2.inp chứa một dãy số nguyên dương (không quá 50 số), mỗi số phân cách nhau bởi 1 kí tự cách,giá trị mỗi số không vượt quá 60000
- Tệp b2.out chứa tống các chữ của mỗi số nguyên trong dãy
VD:
Bài 3: Tìm ưcln của 2 sô nguyên nhập từ bàn phím
- tệp b3.inp chứa 2 số nguyên trên cùng một dòng
- tệp b3.out chứa ucln
Bài 4: Viết ct kiểm tra xem 2 sô nguyên có phải là là số nguyên tố cùng nhauhay không ( 2 số nguyên được gọi là nt cùng nhau nếu có ucln =1)
- Tệp ‘b4.inp’ gồm 2 sô nguyên, tệp ‘b4.out’ chứa kết quả: nếu là snt cùng nhau thì ghi là “dung”, nếu không phải thi ghi là “sai”
1 9 7 3 -6
7 3
1200 35000 7289
3 8 26
Trang 2VD: b4.inp:
B4.out:
Bai 5: Nhập dãy số thực a, tinh tổng a1 - a2+a3-a4+ an
Dữ liệu vào từ Tep.inp gồm 2 dòng:
- Dòng 1 chứa số nguyên n
- Dòng 2 là dãy số thực gồm n số hạng
Dữ liệu ra là Tệp.out là giá trị tổng
Bài 6: Tỡm UCLN của n số nguyờn dương:
- Tệp b6.inp gồm 2 dũng: Dũng đầu tiờn chứa số nguyờn dương n, dũng thứ
2 chứa n số nguyờn dương
- Tệp b6.out chứa 1 số nguyờn là UCLN của n số nguyờn từ tệp b6.inp
Bài 7: Tỡm xem trong cỏc sụ nguyờn từ 1 đến n cú bao nhiờu số hoàn thiện (số hoàn thiện là số nguyờn dương cú tổng cỏc ước số nguyờn dương bộ hơn
nú bằng chớnh nú)
- tệp b7.inp chứa số nguyờn dương n
- tệp b7.out chứa tất cả cỏc số hoàn thiện tỡm được trờn cựng một dũng
Bài 8: cho 2 phan so a/b va c/d hay xac dinh 2 so nguyen duong e va f thoa man e/f=a*c/(b*d) (e/f la phan so da toi gian)
Dữ liệu vào là tệp nhan.inp: Dũng 1 chứa 2 số a và b, dũng 2 chứa 2 số c và
d (a, b, c, d là cỏc số nguyờn dương khụng lớn hơn 10000
Dữ liệu ra là tệp nhõn.out chứa 2 số e và f trờn cựng một dũng
Bai 9: Cho một xâu s đếm xem trong xâu có mấy từ (từ làmột dãy các ký tự liên tiếp không cha dấu cách) dl vào tù filevăn bản demtu.inp gồm một xau ky tu không quá 255 kí tụ,kết quả ghi ra file demtu.out là một số nguyên dơng
Bai 10: Xâu đảo
Dữ liêu vào từ file văn bản xaudao.inp chứa một xâu st Kết quả ghi ra file vb xaudao.out xâu đảo ngợc của stBai 11 Viết chơng trình đọc từ tệp b11.inp xâu ký tự S vàthông báo ra tệp f2.out số lần xuất hiện của mỗi chữ cáitiếng Anh trong S (Không phân biệt chữ hoa, chữ thờng)VD:
Trong xau co 2 chu B
2 9
dung
Trang 3Bài 12: Cho mảng 2 chiều m hàng, n cột (m,n<=50) Hãy điền các số nguyêndương từ 1 đến m*n vào mảng 2 chiều sao cho mảng được sắp thứ tự theohình vẽ: (ví dụ m=3, n=4) thì mảng có dạng sau:
1 2 3 4
8 7 6 5
9 10 11 12
Tệp b12.inp gồm 2 số nguyên dương m và n trên cùng một dòng
Tệp b12.out là các giá trị của mảng
Tệp b13.inp chứa một số nguyên n
Tệp b13.out chứa dãy sô nguyên và kết luận về số phần tử khác nhau
A, Kiem tra so nguyen to cua mang
B, Tim phan tu lon nhat cua tung dong
File songuyen.int nhu sau:
m na11 a12 a1na21 a22 a2n
am1 amnkÕt qu¶ xuÊt ra file v¨n b¶n songuyen.out
- ghi c¸c sè nguyªn tè cã trong m¶ng a tren 1 dong
- Ghi cac gia tri lon nhat tren dong thu 2
Trang 4Bài 15: T×m d·y con t¨ng dµi nhÊt:
- D÷ liÖu vµo tõ tÖp M.inp:
+ Dong 1 chøa sè nguyªn n
Cho biến điều khiển i để duyệt dãy số (mảng), biến dmax để lưu độ dài dãy
số, biến luui để lưu vị trí đầu tiên của dãy số cần tìm
- ban đâu gán dmax:=0; i:=1
- trong khi i<n thì:
gán biến j:=I, kiểm tra nếu dãy còn tăng thì tăng j, đặt dmax:= j-i+1 nếu dmax<j-i+1, đặt luui:=I; tăng I (i:=j+1) để kiểm tra tiếp
Bài 16: Đề thi 2009-2010
Bài 17: Đề 2010-2011
Bài 18: Giai thừa của một số được cho bởi công thức sau: n!=1*2*…*nCho số N (N<=2.109) nguyên dương tính tổng giai thừa các chữ số của nó
- Tệp b18.inp chứa số nguyên N
- Tệp b18.out chứa giá trị của tổng giai thừa
Trang 5Tệp b19.out:
- Nếu n không thoả mãn thì thông báo: NO
- Nếu thoả mãn thì thông báo YES và vị trí số đó trong dãy
vd: 2333 là 1 số siêu nguyên tố có 4 chữ số vì 233, 23, 2 cũng là các số nguyên tố.)
- Tệp b20.inp chứa sô nguyên n (2<=n<=10)
- Tệp b20.out: + Dòng đầu tiên chứa dãy số siêu nguyên tố có n chữ số
+ Dòng thứ 2 là số lượng các số siêu nguyên tố VD:
Bài 21: Kiểm tra 1 số nguyên dương có phải số siêu nguyên tố hay không?
Dữ liệu vào chứa số nguyên n
Dữ liệu ra: Nếu là số siêu nguyên tố thì kết luận ‘dung’, ngược lại thì kết luận ‘sai’
Vd:
Trang 6Nhập một dóy A cú N số tự nhiờn (N<40), mỗi số khụng lớn hơn 1000 và 1
số K Hóy xuất ra cỏc phần tử cú số lần xuất hiện trong dóy A từ K lần trở lờn ( Mỗi số chỉ xuất 1 lần)
Dữ liệu nhập: file DAYSO.INP:
4 xuat hien 3 lan
6 xuat hien 2 lan
4
4 6 7 4 5 9 4 6
-1
Bài 23: tìm dãy con có tổng các phần tử nhỏ nhất
Input: chứa số nguyên n (n<100) và dãy số nguyên gồm n số hạng (mỗi số có giá trị tuyệt đối <=1000)
Output: 2 dong: dong 1 là vi tri bắt đầu và kết thúc của dãycon, dòng 2 là các phần tử của day con
VD: inp
out:
3 4-2 -4
Bài 24 Tìm đoạn dài nhất các phần tử liên tiếp nhau cùng chia hết cho một số nguyên K
- Dữ liệu vào từ tệp m.inp: Dòng Đầu tiên chứa hai số
nguyên N, K (khác 1), dòng tiếp theo chứa N số nguyên
5
2 3 -2 -4 7
Trang 7- Dữ liệu ra là tệp M.out chứa số nguyên là độ dài đoạn dài nhất tìm đợc.
8 2
1 9 2 4 3 8 10 6
3
Bai 25: Tim day con chung 2 day Input la so nguyen
n(n<=100) va 2 day so co n chu so (mỗi sô có giá trị tuyệt
đối không vợt quá 1000, output la do dai day con dai nhat
Hỏi số ở vị trớ thứ k trong dóy trờn là số nào?
- Tệp inp chứa số nguyờn k (0<k < 10000)
- Tệp out gồm 2 dũng: Dũng 1 chứa dóy số, dũng 2 chứa số cuối cựng của dóy số
VD:
1Hướng dẫn: Dựng biến S để đếm số lượng cỏc số trong dóy, biến I để đếm cỏc số tự nhiờn bắt đầu từ 1
- Khi S cũn nhỏ hơn hoặc bằng K thỡ: gỏn cho biến S1=S, đồng thời tăng s và tăng I ( mỗi lần I tăng thờm 1, nếu i<10 thỡ s tăng thờm 1, nếu 10<=i<=99 thỡ s tăng 2,……….), tăng đến khi s>k thỡ dừng
- Chuyển số I thành xõu và gỏn cho biến x
- Nếu k = s1 thỡ số thứ k chớnh là (i-1) mod 10, nếu s1<k thỡ (tạo 1 xõu gồm n-s1 ký tự của xõu x, số thứ k là phần tử thứ n-s1 của xõu vừa tạo)
Bai 27: Cho số nguyên dơng n (n<=1000)
Day số A1,A2, Ai goi la day so dac biet neu no thoa man cac dieu kien
- La day giam dan
- Voi moi Ai thi Ai hoac la so nguyen to hoac la uoc cua mot trong cac so tu Ai+1 đến n
Trang 8-inp: 1 dong la day so nguyen
- output: day so da bi dao
Kiểm tra cỏc số nguyờn tố bắt đầu từ số 2 và chuyển thành xõu, nếu I chia hết cho 2 (từng cặp) thỡ chuyển xõu thành số, kiểm tra số đú cú phải là
nguyờn tố khụng, nếu đỳng thỡ tăng d lờn 1
- Lặp đến khi d=m
Bài 31:
Tìm dãy con đối xứng dài nhất của một dãy số nguyên In put gồm 2 dòng: Dòng 1 chứa số nguyên N, dòng 2 chứa N sốnguyên,
Trang 9Output gồm 2 dòng: Dong 1 là vị trí bắt đầu của dãy đối xứng và độ dài của dãy đx dòng 2 là các phần tử của dãy ĐXVD:
Viết chương trỡnh phõn tớch một số ra làm cỏc thừa số nguyờn tố:
- tệp input chứa số nguyờn n (n<30000)
- Tệp out là biểu thức đó được phõn tớch
VAR i,n :INTEGER;
Trang 10- Tệp inp chứa số nguyên k
- Tệp out chứa tất cả các cặp số là bạn của nhau
FOR i:=1 TO k DIV 2 DO
IF k MOD i =0 THEN tong:=tong+i;
Kiểm tra 1 số có phải là số nguyên tố mạnh hay không Số nguyên tố mạnh
là số lớn hơn trung bình cộng của số nguyên tố liền trước và số nguyên tố liền sau nó.
- Tệp inp gồm nhiều dòng, dòng đầu tiên chứa sô nguyên n (n<=100),
n dòng tiếp theo mỗi dòng chứa 1 sô nguyên (0<=n<10000)
- Tệp out gồm n dòng, nếu là snt mạnh thì ghi true, ngược lại thì ghi False
Bai 36: Tim vi tri cuoi cung cua xau s1 trong xau s2
Trang 11Input: gåm 2 dßng: mçi dong cha 1 x©u
Output: lµ vÞ trÝ cÇn t×m
12abc564ghabtrr
Bai 37: Tinh so lan lap cua xau s1 trong xau s2
Input: gåm 2 dßng: mçi dong chøa 1 x©u
Output: chøa sè lÇn lÆp
12abc564ghabtrr
Bai 38: Dem so phan tu khac nhau cua xau
Input: Chøa 1 x©u
Output: chøa 1 sè theo yªu cÇu
Bài 40: Đảo dãy số (de hsg 2006-2007)
Cho một dãy số có N số nguyên, mỗi số có trị tuyệt đối nhỏ hơn 2.000.000.000 Em hãy đưa ra một cách sắp xếp N số đó sao cho tổng lớn nhất của các cặp số cạnh nhau là nhỏ nhất.
Dữ liệu vào từ tệp văn bản DAODAY.INP
Dũng đầu tiên chứa số nguyên N ( 2 ≤ N ≤ 1000),
Dũng thứ hai chứa N số của dóy số trong dóy ban đầu.
Dữ liệu ra đưa ra tệp văn bản DAODAY.OUT
Chứa duy nhất một số là tổng lớn nhất của các cặp số cạnh nhau là nhỏ nhất (sau khi đã sắp xếp)
Ví dụ về dữ liệu vào và dữ liệu ra
Trang 12Bài 43: Cho 2 dãy số nguyên a= (a1,a2, an) và b=(b1,b2, ,bn) Các phần
tử của mỗi dãy đã được sắp xếp theo thứ tự không giảm, mỗi phần tử có giá trị tuyệt đối không vượt quá 32000 Hãy hoà hai dãy a và b thành dãy không giảm c=(c1,c2, ,c2n)
Dữ liệu vào: Gồm 3 dòng: Dòng 1 chứa số nguyên n (1<=n<=100), 2 dòng còn lại chứa dãy a và b
Dữ liệu ra: chứa dãy c
Hãy xác định số cách ốp khác nhau có thể thực hiện
- Đọc dữ liệu từ tệp input gồm nhiều dòng:
Trang 13+ Dòng đầu tiên chứa giá trị n
+ n dòng sau chứa các giá trị a (1<=a<=20)
Tệp output gồm a dòng, mỗi dòng chứa một kết quả tìm được
Bai 47: Cho trước một xâu nhị phân độ dài bất kỳ được đưa vào từ file văn bản
INPUT.TXT Cần biến đổi xâu nhị phân này về dạng toàn số 0 Các phép biến đổi có thể chỉ là một trong các loại sau:
- Biến đổi xâu con 11 thành 00.
- Biến đổi xâu con 010 thành 000.
Trang 14Hãy chỉ một cách biển đổi xâu đã cho thành xâu có toàn 0 Kết quả thể hiện trong file OUTPUT.TXT như sau:
Dòng đầu tiên của OUTPUT.TXT chứa xâu ban đầu, sau đó mỗi dòng là một xâu tiếp theo sau một phép biến đổi, xâu cuối cùng là xâu toàn 0.
Ví dụ 1:
11010000 00010000 00000000
Ví dụ 2:
Bai 48: Dãy con
Cho một dãy số nguyên dương a1,a2, ,aN (10 < N < 10000), ai
<=10000 với mọi i=1 N và một số nguyên dương b (b < 100 000 000).
Yêu cầu : Tìm độ dài nhỏ nhất của dãy con chứa các phần tử liên tiếp
của dãy mà có tổng các phần tử lớn hơn hoặc bằng b
Dữ liệu vào: Đọc từ file SUB.INP gồm nhiều test, mỗi test chứa N và
S ở dòng đầu Dòng 2 chứa các phần tử của dãy
Dữ liệu ra: Kết quả ghi vào file SUB.OUT, mỗi test đưa một dòng
chứa độ dài của dãy con tìm được
Bài 49 - Đếm số ô vuông
Cho một bảng gồm NxN điểm nằm trên các mắt lưới ô vuông (3 ≤ N ≤100) các điểm kề nhau trên một hàng hay một cột có thể được nối với nhaubằng một đoạn thẳng hoặc không được nối Các đoạn đó sẽ tạo ra các ôvuông trên bảng
Ví dụ: với bảng sau đây thì N = 4 và có 3 ô vuông:
Trang 15Trên mỗi hàng có thể có nhiều nhất N-1 đoạn thẳng nằm ngang và có tất cả
N hàng như vậy Tương tự như vậy có tất cả N-1 hàng các đoạn thẳng nằmdọc và trên mỗi hàng có thể có nhiều nhất N đoạn
Để mô tả người ta dùng hai mảng nhị phân: một mảng ghi các đoạn thẳngnằm ngang kích thước N x (N-1), và một mảng ghi các đoạn nằm dọc kíchthước (N-1) x N Trong mảng dùng số 1 để mô tả đoạn thẳng nối giữa 2điểm, còn số 0 miêu tả giữa 2 điểm không có đoạn thẳng nối Trong ví dụtrên thì:
Dữ liệu vào được nhập từ các tập tin: ngang.inp và doc.inp
+ Tập tin ngang.inp có N dòng, N-1 cột là các số 0 hoặc 1, mỗi sốđược ghi cách nhau ít nhất một dấu cách
+ Tập tin doc.inp có N-1 dòng và N cột là các số 0 hoặc 1, mỗi sốđược ghi cách nhau ít nhất một dấu cách
Tập tin kq.out chứa kết quả cần tìm
Bài 50: Tính tích của số nguyên N và giá trị của xâu số:
input: Gồm 2 dòng: Dòng 1 chứa số nguyên n, dòng 2 là giá trị của xâu số.output: chứa kết quả tính được
Con ốc sên đang ở gốc của một cái cây cao v mét tính từ gốc Ốc sên muốn
bò lên ngọn cây để ăn những lá non trên đó Ban ngày ốc sên bò được a mét
lên trên, nhưng ban đêm, khi ngủ nó bị trôi xuống dưới b mét.
Yêu cầu: Cho các số nguyên v,a,b (1<=b<=a<=v<=109)
Hãy xác định số ngày cần thiết để ốc sên lên tới ngọn cây
Dữ liệu vào: Vào từ file văn bản SNAIL.INP gồm một dòng chứa 3 số
nguyên a,b,v
Trang 16Kết quả : Đưa ra file văn bản SNAIL.OUT một số nguyên - kết quả tìm được
Ví dụ: Với số n=1 và xâu là 01a2b3456cde478 dãy số cần đưa ra là 1,2, 478,3456
Yêu cầu: Cho một số nguyên n ( 1<=n <= 100) và n xâu, mỗi xâu có độ dài không quá 100
Hãy đưa ra dãy số nhận được đã sắp xếp theo thứ tự không giảm,mỗi số trên một dòng
Dữ liệu:vào từ văn bản NUMBERS.INP:
Dòng đầu tiên chứa số nguyên n,
Mỗi dòng trong n dòng sau chứa một xâu chỉ gồm các kí tự la tinh thường vàsố
Dữ liệu đảm bảo không quá 500 số được tách ra
Kết quả: Đưa ra file văn bản NUMBERS.OUT dãy số nhận được đã sắp xếp
theo thứ tự không giảm, mỗi số trên một dòng
Ví dụ :
4 43silos0 zita002 le2sim 231233
0 2 2 43 231233
Trang 17Yêu cầu: cho số nguyên dương n dãy xác định an (1<= n <=109).
Dữ liệu : vào tư file văn bản SEQUENCE.INP gồm nhiều tests, mỗi tests trên một dòng chứa một số nguyên n
Kết quả : Đưa ra file văn bản SEQUENCE.OUT, kết quả mỗi tests đưa ra trên một dòng
Ví dụ
1 12
1 77
Bài 54: Chuyển số thập phân sang hệ nhị phân
Dữ liệu vào từ tệp input:chữa 1 số thập phân
Dữ liệu ra: Là số ở hệ nhị phân tương ứng
Bài 55: Chuyển số nhị phân sang hệ thập phân
Dữ liệu vào từ tệp input:chữa 1 dãy bit
Dữ liệu ra: Là số ở hệ thập phân tương ứng với dãy bit đó
Bài 56: Chuyển số thập phân sang hệ 16
Dữ liệu vào từ tệp input:chữa 1 số thập phân
Dữ liệu ra: Là số ở hệ 16 tương ứng
Bài 57: Chuyển số hệ 16 sang hệ thập phân
Dữ liệu vào từ tệp input:chữa 1 dãy bit
Dữ liệu ra: Là số ở hệ thập phân tương ứng với dãy bit đó
Bài 58: Xâu đối xứng
Xâu đối xứng là xâu đọc giống nhau nếu ta bắt đầu đọc từ trái qua phải hoặc
từ phải qua trái Ví dụ, xâu RADAR là xâu đối xứng, xâu TOMATO không phải là xâu đối xứng
Yêu cầu: Cho một xâu S gồm không quá 200 kí tự Cho biết S có phải là xâu
đối xứng hay không? Nếu không, cho biết số kí tự ít nhất cần chèn vào S để
S trở thành xâu đối xứng
Trang 18Dữ liệu: Vào từ file văn bản doixung.INP, gồm duy nhất 1 dũng ghi xõu S Kết quả: Ghi ra file văn bản doixung.OUT, duy nhất số k là số kớ tự ớt nhất
cần thờm vào S để S trở thành xõu đối xứng Nếu xõu S đó cho là đối xứng thỡ ghi k = 0
VD:
B ài 59:
Cho một số nguyên dơng k và một xâu ký tự s Xâu s chỉ gồm
các ký tự là các chữ cái la tinh thờng ‘a’ ’z’ và các chữ số ‘0’ ’9’, trong
đó có ít nhất k ký tự là chữ số Bạn hãy viết một chơng trình loại bỏ một số ký tự ra khỏi xâu s sao cho k ký tự còn lại, theo đúng thứ tự đó tạo nên số nhỏ nhất Trong k ký tự còn lại có thể cho phép các chữ số 0
đứng đầu.
Dữ liệu: Vào từ file văn bản MIN.OUT gồm 2 dòng Dòng thứ nhất chứa
số nguyên dơng k (k ≤ 10) Dòng thứ hai chứa xâu s có độ dài nhỏ
Trong lý thuyết số hai số nguyờn tố p và q được gọi là cặp số nguyờn tố sinh đụi nếu q –
p = 2 Vớ dụ, cỏc cặp số (3, 5), (11, 13), (17, 19) là cỏc cặp sinh đụi Trong trường hợp tổng quỏt, với số nguyờn dương k cho trước, cặp số nguyờn tố p và q được gọi là sinh đụi (tổng quỏt) nếu q – p = k Vớ dụ, với k = 4 cặp số nguyờn tố (3, 7) được gọi là sinh
đụi tổng quỏt.
Tồn tại giả thuyết là cỏc cặp số nguyờn tố sinh đụi nhiều vụ hạn Tuy nhiờn, điều đú chưa
được chứng minh Dễ dàng thấy rằng với k cho trước, xỏc định số cặp sinh đụi tổng quỏt
trong tập số tự nhiờn là bài toỏn phức tạp khụng kộm việc xỏc định số lượng cặp sinh đụi theo định nghĩa thụng thường.
Ở đõy chỳng ta xột một bài toỏn đơn giản hơn.
Yờu cầu: Cho n và k (1 ≤ n, k ≤ 106 ) Hóy xỏc định số cặp sinh đụi tổng quỏt trong
phạm vi từ 1 đến n.
Dữ liệu: Vào từ file văn bản sinhdoi.INP gồm một dũng chứa 2 số nguyờn n và k.
Kết quả: Đưa ra file văn bản sinhdoi.OUT Dũng đầu chứa một số nguyờn – số lượng cặp
tỡm được, n dũng tiếp theo chứa cỏc cặp.