Bài toán 1: Biểu diễn số
Biết rằng 1 số tự nhiên n (n<1000) luôn tồn tại số nguyên dương k (k <20) và 1 cách điền dấu cộng hoặc dấu trừ vào các vị trí dấu * dưới đây để nhận 1 đẳng thức đúng:
*1$^{2}$*2$^{2}$*...*k$^{2}$ = n
Với n = 0, ta có: + 1$^{2}$ + 2$^{2}$ - 3$^{2}$ + 4$^{2}$ - 5$^{2}$ -6$^{2}$ + 7$^{2}$ = 0
Hãy viết chương trình nhập vào một số tự nhiên n (n<1000), đưa ra 1 cách biểu diễn thỏa mãn
Hướng dẫn trả lời:
uses crt;
var n,i:integer;
s:real;
begin
clrscr;
write('n='); readln(n);
if (n>=0) and (n<=100) then
begin
s:=0;
for i:=1 to n do
s:=s+(i/(i+1));
writeln('tong la: ',s);
end
else writeln('vui long nhap lai');
readln;
end.
Bai toán 2. Knock out chào 2022
Sử dụng lần lượt 9 chữ số từ 1 đến 9 cùng các phép toán cộng, trừ, nhân, chia để tạo ra các dăng thức có kết quả là 2022. Ví dụ, 1 234 - 5 - 6 + 789") sẽ trả về 2022 là một cách thoả mãn.
Trong Python cung cấp hàm eval(). đầu vào là xâu biểu diễn một biểu thức, hàm sẽ trả về giá trị của biểu thức đó. Ví dụ. eval('1234 + 5 - 6 + 789") sẽ trả về 2 022.
Hướng dẫn trả lời:
Gợi ý: hàm eval()
x = 1
print(eval('x + 1'))
Đầu ra
2
Ở đây, eval() hàm đánh giá biểu thức x + 1 và print được sử dụng để hiển thị giá trị này.
Bài toán 3. Số siêu nguyên tố
Số siêu nguyên tố là số nguyên tố mà khi bỏ một số tuỳ ý các chữ số bên phải của nó thì phần còn lại vẫn tạo thành một số nguyên tố. Ví dụ, 2 333 là số siêu nguyên tố có 4 chữ số vì 233, 232 cũng là các số nguyên tố.
Cho số nguyên dương N (0 < N < 10), đưa ra các số siêu nguyên tố có N chữ số cùng số lượng của chúng. Ví dụ, với N = 4 có 16 số: 2 333, 2 339, 2 393, 2 399, 2 939, 3 119, 3 137, 3 733, 3 739,3 793,3 797, 5 939, 7 193, 7 331, 7 333, 7 393.
Hướng dẫn trả lời:
Gợi ý:
#include<iostream>
#include<queue>
#include<math.h>
using namespace std;
bool isPrime(int n)
{ if (n<2)
return false;
for (int i=2; i<=sqrt(n); i++)
if (n%i==0)
return false;
return true; }
int main(){ queue<int> q;
int n; cin >> n;
for (int i = 2; i <= n, i < 10; i++){ if (isPrime(i)){ q.push(i); } }
while (!q.empty())
{
for (int i = 1; i <= 9; i++)
{
int k = q.front()*10 + i; if ( k <= n && isPrime(k))
{
q.push(q.front()*10 + i);
}
} cout << q.front() << " "; q.pop();
}
return 0;
}
Bài toán 4. Mã đi tuần
Cho bản cờ n x n ô tìm cách di chuyển một quân mã xuất phát từ một ô bất kì, mã di chuyển theo luật cờ vua và đi qua tất cả các ô, mỗi ô qua đúng một lần. Ví dụ. Hình 1 là một phương án với n - 5.
Hướng dẫn trả lời:
//Hàm bước đi
void diChuyen(int x, int y) {
}
Bài toán 5. Tìm đường trong mê cung
Một mê cung được biểu diễn bằng 1 bảng số kích thước m x n . Các hàng của bảng được đánh số từ 0 đến m - 1, các cột của bảng được đánh số từ 0 đến m-1, các cột được đánh số từ 0 đến n -1. Ô nằm giao giữa hàng i và cột j là ô (i,j) mô tả phòng (i,j). Trong mê cung có 1 số phòng cấm không được phép di chuyển vào. Xuất phát tại phòng (0,0), người chơi cần tìm 1 đường đi di chuyển tới phòng (m-1, n - 1) (Hình 2)
Hướng dẫn trả lời: