# BlueCyber Câu 3 (2đ): ```py= def so_cach(N): if N <= 1: return N # Khởi tạo mảng dp để lưu số cách lát cho từng kích thước dp = [0] * (N + 1) # Trường hợp cơ sở dp[1] = 1 dp[2] = 2 # Tính dp[i] cho i từ 3 đến N for i in range(3, N + 1): dp[i] = dp[i - 1] + dp[i - 2] return dp[N] # Nhập giá trị của N từ người dùng N = int(input()) if 1 <= N <= 100: cach = so_cach(N) print(cach) else: print("-1") ``` Câu 2 (5đ): ```py= num = int(input()) uoc = [] for i in range(1,num//2+1):# Tìm ước if num % i == 0: uoc.append(i) tong = sum(uoc) if tong > num: # So sánh print('yes') else: print('no') ``` Câu 1 (3đ): ```py= s = input() t = input() index = [] len_s = len(s) for i in range(len(t)-len_s+1): if s == t[i:i+len_s]: index.append(i+1) if len(index) <= 0: print('-1') else: print(' '.join(map(str,index))) ```