Bài tập Java cơ bản, có lời giải code mẫu

Để phục vụ nhu cầu học Java của các bạn, Quản Trị Mạng đã tổng hợp lại một số bài tập Java từ nhiều nguồn, có kèm theo code mẫu (cho một số bài). Hy vọng có thể giúp ích cho quá trình học tập ngôn ngữ lập trình Java của các bạn.

Bài tập Java cơ bản có giải

Bài 1. Viết chương trình tìm ước số chung lớn nhất, bội số chung nhỏ nhất của hai số tự nhiên a và b. Xem giải Bài 1

Bài 2. Viết chương trình chuyển đổi một số tự nhiên ở hệ cơ số 10 thành số ở hệ cơ số b bất kì (1< b≤ 36). Xem giải Bài 2

Bài 3. Hãy viết chương trình tính tổng các chữ số của một số nguyên bất kỳ. Ví dụ: Số 8545604 có tổng các chữ số là: 8+5+4+5+6+0+4= 32. Xem giải Bài 3

Bài 4. Viết chương trình phân tích một số nguyên thành các thừa số nguyên tố Ví dụ: Số 28 được phân tích thành 2 x 2 x 7. Xem giải Bài 4

Bài 5. Viết chương trình liệt kê tất cả các số nguyên tố nhỏ hơn n cho trước. Xem giải Bài 5

Bài 6. Viết chương trình liệt kê n số nguyên tố đầu tiên. Xem giải Bài 6

Bài 7. Dãy số Fibonacci được định nghĩa như sau: F0 =1, F1 = 1; Fn = Fn-1 + Fn-2 với n>=2. Hãy viết chương trình tìm số Fibonacci thứ n. Xem giải Bài 7

Bài 8. Một số được gọi là số thuận nghịch độc nếu ta đọc từ trái sang phải hay từ phải sang trái số đó ta vẫn nhận được một số giống nhau. Hãy liệt kê tất cả các số thuận nghịch độc có sáu chữ số (Ví dụ số: 558855). Xem giải Bài 8

Bài 9. Viết chương trình liệt kê tất cả các xâu nhị phân độ dài n. Xem giải Bài 9

Bài 10. Viết chương trình liệt kê tất cả các tập con k phần tử của 1, 2, ..,n (k≤n). Xem giải Bài 10

Bài 11. Viết chương trình liệt kê tất cả các hoán vị của 1, 2, .., n. Xem giải Bài 11

Bài 12. Tính giá trị của đa thức P(x)=anxn+ an-1xn-1+ … + a1x+ a0 theo cách tính của Horner: P(x)=((((anx+ an- 1)x+ an-2… + a1)x+ a0

Xem giải Bài 12

Bài 13. Nhập số liệu cho 2 dãy số thực a0, a1 ,…, am-1 và b0 , b1 ,…, bn-1. Giả sử cả 2 dãy này đã được sắp theo thứ tự tăng dần. Hãy tận dụng tính sắp xếp của 2 dãy và tạo dãy c0 , c1 ,…, cm+n-1 là hợp của 2 dãy trên, sao cho dãy ci cũng có thứ tự tăng dần. Xem giải Bài 13

Bài 14. Nhập số liệu cho dãy số thực a0, a1,…, an-1. Hãy liệt kê các phần tử xuất hiện trong dãy đúng một lần. Xem giải Bài 14

Bài 15. Nhập số liệu cho dãy số thực a0, a1,…, an-1. Hãy liệt kê các phần tử xuất hiện trong dãy đúng 2 lần. Xem giải Bài 15

Bài 16. Nhập số liệu cho dãy số thực a0, a1,…, an-1. In ra màn hình số lần xuất hiện của các phần tử. Xem giải Bài 16

Bài 17. Nhập số n và dãy các số thực a0, a1,…, an-1. Không đổi chỗ các phần tử và không dùng thêm mảng số thực nào khác (có thể dùng mảng số nguyên nếu cần) hãy cho hiện trên màn hình dãy trên theo thứ tự tăng dần. Xem giải Bài 17

Bài 18. Nhập một xâu ký tự. Đếm số từ của xâu ký tự đó. Thí dụ ” Trường học ” có 2 từ. Xem giải Bài 18

Bài 19. Viết chương trình liệt kê tất cả các số nguyên tố có 5 chữ số sao cho tổng của các chữ số trong mỗi số nguyên tố đều bằng S cho trước. Xem giải Bài 19

Bài 20. Nhập một số tự nhiên n. Hãy liệt kê các số Fibonaci nhỏ hơn n là số nguyên tố. Xem giải Bài 20

Bài 21. Viết chương trình nhập một số nguyên dương n và thực hiện các chức năng sau:

  1. Tính tổng các chữ số của
  2. Phân tích n thành các thừa số nguyêntố.

Xem giải Bài 21

Bài 22. Viết chương trình nhập một số nguyên dương n và thực hiện các chức năng sau:

  1. Liệt kê các ước số của n. Có bao nhiêu ước số.
  2. Liệt kê các ước số là nguyên tố của

Xem giải Bài 22

Bài 23. Viết chương trình nhập một số nguyên dương n và thực hiện các chức năng sau:

  1. Liệt kê n số nguyên tố đầu tiên.
  2. Liệt kê n số Fibonaci đầu tiên.

Xem giải Bài 23

Bài 24. Viết chương trình nhập vào vào ma trận A có n dòng, m cột, các phần tử là những số nguyên lớn hơn 0 và nhỏ hơn 100 được nhập vào từ bàn phím. Thực hiện các chức năng sau:

  1. Tìm phần tử lớn nhất của ma trận cùng chỉ số của số đó.
  2. Tìm và in ra các phần tử là số nguyên tố của ma trận (các phần tử không nguyên tố thì thay bằng số0).
  3. Sắp xếp tất cả các cột của ma trận theo thứ tự tăng dần và in kết quả ra màn hình.

Xem giải Bài 24

Bài 25. Viết chương trình liệt kê các số nguyên có từ 5 đến 7 chữ số thoả mãn:

  1. Là số nguyên tố.
  2. Là số thuận nghịch.
  3. Mỗi chữ số đều là số nguyên tố

Xem giải bài 25

Bài 26. Viết chương trình liệt kê các số nguyên có 7 chữ số thoả mãn:

  1. Là số nguyên tố.
  2. Là số thuận nghịch.
  3. Tổng các chữ số của số đó là một số thuận nghịch

Xem giải bài 26

Bài 27. Viết chương trình nhập vào vào mảng A có n phần tử, các phần tử là những số nguyên lớn hơn 0 và nhỏ hơn 100 được nhập vào từ bàn phím. Thực hiện các chức năng sau:

  1. Tìm phần tử lớn nhất và lớn thứ 2 trong mảng cùng chỉ số của các số đó.
  2. Sắp xếp mảng theo thứ tự giảm dần.
  3. Nhập một số nguyên x và chèn x vào mảng A sao cho vẫn đảm bảo tính sắp xếp giảm dần.

Xem giải bài 27

Bài 28. Viết chương trình nhập vào vào ma trận A có n dòng, m cột, các phần tử là những số nguyên lớn hơn 0 và nhỏ hơn 100 được nhập vào từ bàn phím. Thực hiện các chức năng sau:

  1. Tìm phần tử lớn nhất của ma trận cùng chỉ số của số đó.
  2. Tìm và in ra các phần tử là số nguyên tố của ma trận (các phần tử không nguyên tố thì thay bằng số 0).
  3. Tìm hàng trong ma trận có nhiều số nguyên tố nhất.

Xem giải bài 28

Bài 29. Viết chương trình nhập các hệ số của đa thức P bậc n (0<n<20). Thực hiện các chức năng sau:

  1. Tính giá trị của đa thức P theo công thức Horner: P(x)=((((anx+ an-1)x+ an-2… + a1)x+ a0
  2. Tính đạo hàm của đa thức P. In ra các hệ số của đa thức kết quả.
  3. Nhập thêm đa thức Q bậc m. Tính tổng hai đa thức P và Q

Xem giải bài 29

Bài 30. Viết chương trình nhập vào vào mảng A có n phần tử, các phần tử là những số nguyên lớn hơn 0 và nhỏ hơn 100 được nhập vào từ bàn phím. Thực hiện các chức năng sau:

  1. Tìm phần tử lớn nhất và lớn thứ 2 trong mảng cùng chỉ số của các số đó.
  2. Sắp xếp mảng theo thứ tự giảm dần.
  3. Nhập một số nguyên x và chèn x vào mảng A sao cho vẫn đảm bảo tính sắp xếp giảm dần.

Bài 31. Viết chương trình thực hiện chuẩn hoá một xâu ký tự nhập từ bàn phím (loại bỏ các dấu cách thừa, chuyển ký tự đầu mỗi từ thành chữ hoa, các ký tự khác thành chữ thường)

Xem giải bài 31

Bài 32. Viết chương trình thực hiện nhập một xâu ký tự và tìm từ dài nhất trong xâu đó. Từ đó xuất hiện ở vị trí nào? (Chú ý. nếu có nhiều từ có độ dài giống nhau thì chọn từ đầu tiên tìm thấy).

Xem giải bài 32

Bài 33.Viết chương trình thực hiện nhập một xâu họ tên theo cấu trúc: họ…đệm…tên; chuyển xâu đó sang biểu diễn theo cấu trúc tên…họ…đệm. Xem giải Bài 33

Bài tập Java cơ bản không giải

Bài 34. Viết chương trình liệt kê tất cả các phần tử của tập:

Bài 35. Viết chương trình liệt kê tất cả các phần tử của tập

Bài 36. Viết chương trình liệt kê tất cả các phần tử của tập

Bài 37. Cho hai tập hợp A gồm n phần tử, B gồm m phần tử (n,m≤255), mỗi phần tử của nó là một xâu kí tự.Ví dụ A = {“Lan”, “Hằng”, “Minh”, “Thủy”}, B = {“Nghĩa”, “Trung”, “Minh”, “Thủy”, “Đức”}. Hãy viết chương trình thực hiện những thao tác sau:

  1. Tạo lập dữ liệu cho A và B (từ file hoặc từ bànphím)
  2. Tìm .
  3. Tìm .
  4. Tìm .

Bài 38. Cho hai đa thức . Hãy viết chương trình thực hiện những thao tác sau:

  1. Tạo lập hai đa thức (nhập hệ số cho đa thức từ bàn phím hoặc file)
  2. Tính
  3. Tìm đạo hàm cấp l ≤n của đa thức.
  4. Tìm
  5. Tìm
  6. Tìm và đa thức dư

Bài 39. Cho hai ma trận vuông A cấp n. Hãy viết chương trình thực hiện các thao tác sau:

  1. Tìm hàng, cột hoặc đường chéo có tổng các phần tử lớn nhất.
  2. Tìm ma trận chuyển vị của A
  3. Tìm định thức của A
  4. Tìm ma trận nghịch đảo của A
  5. Giải hệ Phương trình tuyến tính thuần nhất n ẩn AX = B bằng phương pháp Gauss

Bài 40. Cho một buffer kí tự gồm n dòng. Hãy viết chương trình thực hiện các thao tác sau:

  1. Tạo lập n dòng văn bản cho buffer.
  2. Đếm số từ trong Buffer.
  3. Tìm tần xuất xuất hiện từ X bất kì trong buffer.
  4. Mã hóa buffer bằng kĩ thuật Parity Bits
  5. Giải mã buffer được mã hóa bằng kĩ thuật parity.
  6. Thay thế từ X bằng từ Y

Bài 41. Hãy viết chương trình thực hiện những thao tác dưới đây:

1. Liệt kê các phần tử của tập

Trong đó b là các số nguyên dương,

2. Liệt kê các phần tử của tập:

trong đó b là các số nguyên dương,

  1. Tính giá trị nhỏ nhất của hàm mục tiêu

Trong đó

4. Tính giá trị nhỏ nhất của hàm mục tiêu ; trong đó là tập các hoán vị của .

Bài 42. Ma trận nhị phân là ma trận mà các phần tử của nó hoặc bằng 0 hoặc bằng 1. Cho A = [aij], B = [bij] là các ma trận nhị phân cấp m × n (i =1, 2,..,m. j= 1, 2, ..,n). Ta định nghĩa các phép hợp, giao, nhân logic và phép lũy thừa cho A và B như sau:

  • Hợp của A và B, được kí hiệu là A ∨ B là ma trận nhị phân cấp m×n với phần tử ở vị trí (i, j) là aij ∨ bij.
  • Giao của A và B, được kí hiệu là A ∧ B là ma trận nhị phân cấp m×n với phần tử ở vị trí (i,j) làaij ∧ bij.
  • Tích boolean của A và B, được kí hiệu là là ma trận nhị phân cấp m×n với phần tử ở vị trí (i,j) làcij = (ai1Ùb1j) Ú (ai2 ∨ b2j) ∨…∨ ( (aik ∨ bkj).
  • Nếu A là một ma trận vuông nhị phân cấp n và r là một số nguyên dương. Lũy thừa Boolean bậc r của A được kí hiệu là (r lần).

Hãy viết chương trình thực hiện các thao tác sau:

  1. Cho A = [aij], B = [bij]. Tìm C =A ∨ B
  2. Cho A = [aij], B = [bij]. Tìm C =A ∧ B
  3. Cho A = [aik], B = [bkj]. Tìm C = Bài tập Java cơ bản
  4. Cho A = [aij] tìm Ar.

Lời giải bài tập Java

Bài 1:

package bai01; 
import java.util.Scanner;
public class Main {

public static int nhap()
{
Scanner input = new Scanner(System.in);
boolean check= false;

int n=0;
while(!check){

System.out.print(" ");
try{

n= input.nextInt();
check= true;

}catch(Exception e){
System.out.println("Ban phai nhap so! hay nhap lai...");
input.nextLine();

}

}
return (n);
}
public static int UCLN(int a, int b){
while(a!= b){
if(a>b) a= a-b;
else b= b-a;

}
return (a);
}
public static void main(String[] args)
{ System.out.println("Nhap a");

int a = nhap();
System.out.println("Nhap b");
int b= nhap();

System.out.println("Uoc chung lon nhat cua "+a+" va "+b+" la: "+UCLN(a,b));
System.out.println("Boi chung nho nhat cua "+a+" va "+b+" la: "+((a*b)/UCLN(a,b)));

}
}

Bài 02:

package bai02;
import java.util.Scanner;
public class Main {

public static void doiCoSo(int n,int base){
if(n>=base) doiCoSo(n / base, base);

if(n % base>9) System.out.printf("%c",n%base+55);
else

System.out.print((n % base));
}
public static int nhap(){
Scanner input= new Scanner(System.in);
boolean check= false;

int n=0;
while(!check){

System.out.print(" ");
try{

n= input.nextInt();
check= true;


}catch(Exception e){
System.out.println("Ban phai nhap so! hay nhap lai...");
input.nextLine();

}
}
return (n);
}
public static void main(String[] args) {
System.out.println("Nhap n");

int n= nhap();
System.out.println("Nhap vao co so can chuyen sang b");
int b= nhap();

System.out.println("So " +n+ " chuyen sang co so " +b+ " thanh: ");
doiCoSo(n,b);

}
}

Bài 03:

package bai03;
import java.util.Scanner;
public class Main {

public static int nhap(){
Scanner input= new Scanner(System.in);
boolean check= false;

int n=0;
while(!check){

System.out.print(" ");
try{

n= input.nextInt();
check= true;

}catch(Exception e){
System.out.println("Ban phai nhap so! hay nhap lai...");
input.nextLine();

}
}
return (n);
}
public static int tinhTong(long i){
int sum=0;

long n;
while(i!=0){

n= i%10;
sum+= n; i/=10;
}
return (sum);
}
public static void main(String[] args){
System.out.print("Nhap n");

int n= nhap();
System.out.println("Tong cua so "+n+" = " +tinhTong(n));
}
}

Bài 04:

package bai04;
import java.util.Scanner;
public class Main {


public static void phanTich(int n){
int i=2;
while(n>1){

if(cachamchung.checkSNT(i)){
if(n%i==0){

System.out.print(i+".");
n/=i;

}
else i++;
}
else i++;
}
}
public static int nhap(){
Scanner input= new Scanner(System.in);
boolean check= false;

int n=0;
while(!check){

System.out.print(" ");
try{

n= input.nextInt();
check= true;
}catch(Exception e){
System.out.println("Ban phai nhap so! hay nhap lai...");
input.nextLine();

}
}
return (n);
}
public static void main(String[] args) {
System.out.print("Nhap n");

int n= nhap();
System.out.print("n= " );
phanTich(n);

}
}

Bài 05:

package bai05;
import java.util.Scanner;
public class Main {


public static void lietKe(int n){

System.out.print(" 2");
for(int i=3;i<n;i+=2){

if(cachamchung.checkSNT(i))System.out.print(" "+i);
}
}
public static int nhap(){
Scanner input= new Scanner(System.in);
boolean check= false;

int n=0;
while(!check){

System.out.print(" ");
try{

n= input.nextInt();
check= true;

}catch(Exception e){
System.out.println("Ban phai nhap so! hay nhap lai...");
input.nextLine();

}
}
return (n);
}
public static void main(String[] args) {
System.out.print("Nhap n");

int n= nhap();
System.out.println("Cac so nguyen to nho hon "+n+ " ");
lietKe(n);

}
}

Bài 06:

package bai06;
import java.util.Scanner;
public class Main {


public static void lietKe(int n){

int i=2,count=0;
while(count<n){

if(cachamchung.checkSNT(i)){
System.out.print(" "+i);
count++;

} i++;
}
}
public static int nhap(){
Scanner input= new Scanner(System.in);
boolean check= false;

int n=0;
while(!check){

System.out.print(" ");
try{

n= input.nextInt();
check= true;

}catch(Exception e){
System.out.println("Ban phai nhap so! hay nhap lai...");
input.nextLine();

}
}
return (n);
}
public static void main(String[] args) {
System.out.print("Nhap n");

int n= nhap();
System.out.println(n+" so nguyen to dau tien la: ");
lietKe(n);

}
}

Bài 07:

package bai07;
import java.util.Scanner;
public class Main {


public static int nhap(){

Scanner input= new Scanner(System.in);
boolean check= false;

int n=0;
while(!check){

System.out.print(" ");
try{

n= input.nextInt();
check= true;

}catch(Exception e){
System.out.println("Ban phai nhap so! hay nhap lai...");
input.nextLine();

}
}
return (n);
}
public static void main(String[] args) {
System.out.print("Nhap n");

int n= nhap();
int[] f= new int[n+1];
f[0]= 1; f[1]= 1;

for(int i=2;i<=n;i++){
f[i]= f[i-1]+f[i-2];
}
System.out.println("So Fibonanci thu "+n+" la: f["+n+"]= "+f[n]);
}
}

Bài 08:

package bai08; 
public class Main {

public static boolean testSoThuanNghich(int n){
StringBuilder xau= new StringBuilder();
String str= ""+n;

xau.append(str);
String check= ""+xau.reverse();
if(str.equals(check)) return true;
else return false;

}
public static void main(String[] args) {
int n,count=0;

for(n=100000 ; n<= 999999 ; n++){
if(testSoThuanNghich(n)){
System.out.println(n);count++;

}
}
System.out.println("Co "+count+" so thuan nghich co 6 chu so");
}
}

Bài 09:

package bai09;
import java.util.Scanner;
public class Main {


public static int nhap(){

Scanner input= new Scanner(System.in);
boolean check= false;

int n=0;
while(!check){

System.out.print(" ");
try{

n= input.nextInt();
check= true;

}catch(Exception e){
System.out.println("Ban phai nhap so! hay nhap lai...");
input.nextLine();

}
}
return (n);
}
public static void main(String[] args) {
System.out.println("Nhap n");

int n= nhap();
int[] array= new int[n];
int tich;

do{
tich= 1;
//In ra mang va tinh tich cac phan tu trong mang
System.out.println("");

for(int j=0 ; j<n ; j++){
System.out.print(" " +array[j]);
tich*= array[j];

}
int i=n-1;
do{

if(array[i]==0){
array[i]=1;
for(int j=n-1 ; j>i ;j--){
array[j]= 0;
}
break;
}
else i--;
}while(i>=0);
}while(tich!=1);
}
}

Bài 10:

package bai10;
import java.util.Scanner;
public class Main {


public static int nhap(){

Scanner input= new Scanner(System.in);
boolean check= false;

int n=0;
while(!check){

System.out.print(" ");
try{

n= input.nextInt();
check= true;

}catch(Exception e){
System.out.println("Ban phai nhap so! hay nhap lai...");
input.nextLine();

}
}
return (n);
}
public static void result(int a[],int k){
int i;
System.out.println();
for(i=1 ; i<=k ; i++){

System.out.print(" "+a[i]);
}
}
public static void try_backTrack(int a[], int n, int k, int i){
int j;

for(j=a[i-1]+1 ; j<=(n-k+i) ; j++){
a[i]= j;

if(i== k) result(a,k);
else try_backTrack(a, n, k, i+1);
}
}
public static void main(String[] args) {
System.out.println("Nhap n");

int n= nhap();
int[] array= new int[n+1];
int k;

System.out.println("Liet ke tat ca cac tap con k phan tu cua 1,2,..,"+n+" : ");
for(k=1 ; k<=n ; k++){

System.out.println("\n Tap con "+k+" phan tu: ");
try_backTrack(array,n,k,1);

}
}
}

Bài 11:

package bai11;
import java.util.Scanner;
public class Main {

public static int nhap(){
Scanner input= new Scanner(System.in);
boolean check= false;

int n=0;
while(!check){

System.out.print(" ");
try{

n= input.nextInt();
check= true;

}catch(Exception e){
System.out.println("Ban phai nhap so! hay nhap lai...");
input.nextLine();

}
}
return (n);
}
public static void main(String[] args) {
System.out.print("Nhap n");

int n= nhap();
int[] array= new int[n+2];
int i,j,k=n-1,temp,check=1;
for(i=0 ; i<n ; i++){

array[i]= i+1;
}
System.out.println("Cac hoan vi ke la: ");
try{

i= n-2;
while(check>0){

//In ra hoan vi System.out.println(" ");
for(j=0 ; j<n ; j++){

System.out.print(" "+array[j]);
}
for(i= n-2 ; i>=0 ; i--){
check= 1;

if(array[i] < array[i+1]){
if(i==n-2){
temp= array[i];
array[i]= array[n-1];
array[n-1]= temp;
break;

}
else{
//Tim so a[k] nho nhat ma >a[i] trong cac so ben phai a[i]
k= i+1;

for(j=i+1 ; j<n ; j++){
if(array[i+1]>array[j] && array[j]>array[i]) k=j;
}
//Doi cho a[k] va a[i]
temp= array[i];
array[i]= array[k];
array[k]= temp;

//Sap xep lai tu a[i+1] toi a[n]
for(j=i+1 ; j<n ; j++){

for(int m= i+1 ; m<n ; m++){
if(array[j]<array[m]){

temp= array[j];
array[j]= array[m];
array[m]= temp;

}
}
}
break;
}
}

else {
check=0;
// break;
}
}
//if(i==0)check=0;
}
}catch(Exception e){}
}
}

Bài 12:

package bai12;
import java.util.Scanner;
public class Main {


public static int nhap(){

Scanner input= new Scanner(System.in);
boolean check= false;

int n=0;
while(!check){

System.out.print(" ");
try{

n= input.nextInt();
check= true;

}catch(Exception e){
System.out.println("Ban phai nhap so! hay nhap lai...");
input.nextLine();

}
}
return (n);
}
public static void horner(int a[], int n){
int T=0,i,x;
System.out.println("\n Nhap x= ");
x= nhap();

T= a[n];
for(i=n ; i>0 ; i--){
T= T*x + a[i-1];
}
System.out.println("Gia tri cua da thuc tinh theo cong thuc Horner la: "+T);
}
public static void main(String[] args) {
int i;

System.out.println("Nhap bac cua da thuc n= ");
int n= nhap();

int[] array= new int[n+1];
for(i=n ; i>=0 ; i--){

System.out.print("Nhap he so cua x^"+i+" = ");
array[i]= nhap();

}
horner(array,n);
}
}

Bài 13:

package bai13;
import java.util.Arrays;
import java.util.Scanner;
public class Main {


public static int nhap(){

Scanner input= new Scanner(System.in);
boolean check= false;

int n=0;
while(!check){

System.out.print(" ");
try{

n= input.nextInt();
check= true;

}catch(Exception e){
System.out.println("Ban phai nhap so! hay nhap lai...");
input.nextLine();

}
}
return (n);
}
public static void inArray(int[] a, int begin , int end){
System.out.println();

int i;
for(i=begin ; i<end ; i++){
System.out.print(" "+a[i]);

}
System.out.println();
}
public static void themPhanTu(int[] a,int n,int pt){
a[0]= pt;

Arrays.sort(a);
}
public static void main(String[] args) {
System.out.println("Nhap n");

int n= nhap();
System.out.println("Nhap m");
int m= nhap();

int i;
int[] a= new int[n+m];
int[] b= new int[m];

//Nhap vao mang A va sap xep theo thu tu tang dan
System.out.println("nhap mang A: ");

for(i=0 ; i<n ; i++){
System.out.print("\n Nhap phan tu thu "+i+" = ");
a[i]= nhap();

}
Arrays.sort(a);
//Nhap vao mang B va sap xep theo thu tu tang dan
System.out.println("nhap mang B: ");

for(i=0 ; i<m ; i++){
System.out.print("\n Nhap phan tu thu "+i+" = ");
b[i]= nhap();

}
Arrays.sort(b);
//Gop mang b vao mang a
for(i=0 ; i<m ; i++){

themPhanTu(a, n+m+1, b[i]);
}
inArray(a, 0, n+m);

}}

Bài 14:

package bai14;
import java.util.Scanner;
public class Main {


public static int nhap(){

Scanner input= new Scanner(System.in);
boolean check= false;

int n=0;
while(!check){

System.out.print(" ");
try{

n= input.nextInt();
check= true;

}catch(Exception e){
System.out.println("Ban phai nhap so! hay nhap lai...");
input.nextLine();

}
}
return (n);
}
public static int countElement(int a[], int n, int i){
int count= 0;

for(int j=0 ; j<n ; j++){
if(a[j]== i)
count ++;

}
return (count);
}
public static void main(String[] args) {
int n,i;

System.out.println("Nhap n= ");
n= nhap();

int[] array= new int[n];
for(i=0 ; i<n ; i++){

System.out.println("Nhap phan tu thu " +(i+1)+" ");
array[i]= nhap();

}
System.out.print("Cac phan tu trong day xuat hien 1 lan: ");
for(i=0 ; i<n ; i++){

if(countElement(array, n, array[i])==1)
System.out.print(" "+array[i]);

}
}
}

Bài 15:

package bai15;
import java.util.Scanner;
public class Main {


public static int nhap(){

Scanner input= new Scanner(System.in);
boolean check= false;

int n=0;
while(!check){

System.out.print(" ");
try{

n= input.nextInt();
check= true;

}catch(Exception e){
System.out.println("Ban phai nhap so! hay nhap lai...");
input.nextLine();

}
}
return (n);
}
public static int countElement(int a[], int n, int i){
int count= 0;

for(int j=0 ; j<n ; j++){
if(a[j]== i)
count ++;

}
return (count);
}
public static void main(String[] args) {
int n,i;

System.out.println("Nhap n= ");
n= nhap();

int[] array= new int[n];
for(i=0 ; i<n ; i++){

System.out.println("Nhap phan tu thu " +(i+1)+" ");
array[i]= nhap();

}
System.out.print("Cac phan tu trong day xuat hien 2 lan: ");
for(i=0 ; i<n ; i++){

if(countElement(array, n, array[i])==2 && countElement(array, i, array[i])==0){
System.out.print(" "+array[i]);

}
}
}
}

Bài 16:

package bai16;
import java.util.Scanner;
public class Main {


public static int nhap(){

Scanner input= new Scanner(System.in);
boolean check= false;

int n=0;
while(!check){

System.out.print(" ");
try{

n= input.nextInt();
check= true;

}catch(Exception e){
System.out.println("Ban phai nhap so! hay nhap lai...");
input.nextLine();

}
}
return (n);
}
public static int countElement(int a[], int n, int i){
int count= 0;

for(int j=0 ; j<n ; j++){
if(a[j]== i)
count ++;

}
return (count);
}
public static void main(String[] args) {
int n,i;

System.out.println("Nhap n= ");
n= nhap();

int[] array= new int[n];
for(i=0 ; i<n ; i++){

System.out.println("Nhap phan tu thu " +(i+1)+" ");
array[i]= nhap();

}
for(i=0 ; i<n ; i++){
if(countElement(array, i, array[i])==0){
System.out.println("Phan tu "+array[i]+ " xuat hien "+countElement(array, n,
array[i])+" lan");
}
}
}
}

Bài 17:

package bai17; 
import java.util.Scanner;
public class Main {

public static int nhap(){
Scanner input= new Scanner(System.in);
boolean check= false;

int n=0;
while(!check){

System.out.print(" ");
try{

n= input.nextInt();
check= true;

}catch(Exception e){
System.out.println("Ban phai nhap so! hay nhap lai...");
input.nextLine();

}
}
return (n);
}
public static float nhapFloat(){
Scanner input= new Scanner(System.in);
boolean check= false;

float n=0;
while(!check){

System.out.print(" ");
try{

n= input.nextInt();
check= true;

}catch(Exception e){
System.out.println("Ban phai nhap so! hay nhap lai...");
input.nextLine();

}
}
return (n);
}
public static int viTriMinFloat(float a[], int n){
float min= a[0];

int key= 0;
for(int j=0 ; j<n ; j++){
if(min>a[j]){
min= a[j];
key= j;

}
}
return (key);
}
public static float maxFloat(float a[], int n){
float max= a[0];

for(int j=0 ; j<n ; j++){
if(max<a[j]) max= a[j];
}
return (max);
}
public static void main(String[] args) {
int n,i;
System.out.println("Nhap n= ");
n= nhap();

float[] array= new float[n];
for(i=0 ; i<n ; i++){

System.out.println("Nhap phan tu thu " +(i+1)+" ");
array[i]= nhapFloat();

}
i =0;
System.out.println("Sap xep theo thu tu tang dan");
while(i<n){

System.out.println(" "+array[viTriMinFloat(array, n)]);
array[viTriMinFloat(array, n)]= maxFloat(array, n);

i++;
}
}
}

Bài 18:

package bai18; 
import java.util.*;
public class Main {

public static void main(String[] args)
{ Scanner input= new
Scanner(System.in);

System.out.println("Nhap vao 1 xau: ");
String str= input.nextLine();

StringTokenizer strToken= new
StringTokenizer(str, " "); System.out.println("So cac tu trong xau la: "+strToken.countTokens());

}
}

Bài 19:

package bai19;
import java.util.Scanner;
public class Main {

public static int nhap(){

Scanner input= new Scanner(System.in);
boolean check= false;

int n=0;
while(!check){

System.out.print(" ");
try{

n= input.nextInt();
check= true;

}catch(Exception e){
System.out.println("Ban phai nhap so! hay nhap lai...");
input.nextLine();

}
}
return (n);
}
public static boolean checkSNT(int n){
if(n>1){
for(int i=2;i<=Math.sqrt(n);i++){
if(n%i==0) return false;

}
return true;
}
else return false;
}
public static int tongChuSo(int n){
int T=0;

while(n>0){
T+= n%10;
n/= 10;
}
return (T);
}
public static void main(String[] args) {
System.out.print("Nhap S= ");

int s= nhap(); int i,count=0;
System.out.println("Cac so nguyen to co tong cac chu so co tong bang "+s+" la: ");
for(i=10000 ; i<=99999 ; i++){

if(checkSNT(i)){
if(tongChuSo(i)== s) {
System.out.println(" "+i);
count++;

}
else continue;
}
}
System.out.println("Co "+count+" so thoa man");
}
}

Bài 20:

package bai20;
import java.util.Scanner;
public class Main {

public static int nhap(){

Scanner input= new Scanner(System.in);
boolean check= false;

int n=0;
while(!check){

System.out.print(" ");
try{

n= input.nextInt();
check= true;

}catch(Exception e){
System.out.println("Ban phai nhap so! hay nhap lai...");
input.nextLine();

}
}
return (n);
}
//Ham kiem tra so nguyen to
public static boolean checkSNT(int n){
if(n>1){

for(int i=2;i<=Math.sqrt(n);i++){
if(n%i==0) return false;

}
return true;
}
else return false;
}
public static void main(String[] args) {
System.out.print("Nhap n= ");

int n= nhap();
int[] f= new int[n];
f[0]= 1; f[1]= 1;

int i=1,count=1;
System.out.print("Cac so Fibonanci nho hon "+n+" la so nguyen to: \n 1");
while(f[i]<n){

if(checkSNT(f[i])){
System.out.print(" "+f[i]);
count++;

} i++;
f[i]= f[i-1] + f[i-2];
}
System.out.println("\n Co "+count+" so thoa man");
}
}

Bài 21:

package bai21;
import java.util.Scanner; public class Main {
public static int nhap(){
Scanner input= new Scanner(System.in); boolean check= false;
int n=0; while(!check){
System.out.print(" "); try{
n= input.nextInt(); check= true;
}catch(Exception e){
System.out.println("Ban phai nhap so! hay nhap lai..."); input.nextLine();
}
}
return (n);
}
public static int tongChuSo(int n){ int T=0;
while(n>0){
T+= n%10;
n/= 10;
}
return (T);
}
//Ham kiem tra so nguyen to
public static boolean checkSNT(int n){ if(n>1){for(int i=2;i<=Math.sqrt(n);i++){ if(n%i==0) return false;
}
return true;
}
else return false;
}
public static void phanTich(int n){
int i=2; while(n>1){
if(checkSNT(i)){
if(n%i==0){
System.out.print(i+"."); n/=i;
}
else i++;
}
else i++;
}
}
public static void main(String[] args) {
System.out.print("Nhap n");
int n= nhap(); System.out.print("n= 1" ); phanTich(n);
System.out.println("Tong cac chu so cua "+n+" la: "+tongChuSo(n));
}
}

Bài 22:

package bai22;
import java.util.Scanner; public class Main {
public static int nhap(){
Scanner input= new Scanner(System.in); boolean check= false;
int n=0; while(!check){
System.out.print(" "); try{
n= input.nextInt(); check= true;

}catch(Exception e){
System.out.println("Ban phai nhap so! hay nhap lai..."); input.nextLine();

}

}
return (n);
}
public static boolean checkSNT(int n){
if(n>1){
for(int i=2;i<=Math.sqrt(n);i++){ if(n%i==0) return false;}

return true;

}
else return false;

}
public static void lietKeUoc(int n){
int count=0;
System.out.print("\nCac uoc cua "+n+" la:"); for(int i=1 ; i<=n ; i++){
if(n%i==0) {
System.out.print(" "+i); count++;

}

}
System.out.println("\nCo "+count+" uoc");
}
public static void lietKeUocSNT(int n){
int count=0;
System.out.print("\nCac uoc cua "+n+" la:"); for(int i=1 ; i<=n ; i++){
if(n%i==0 && (checkSNT(i))) { System.out.print(" "+i); count++;

}

}
System.out.println("\nCo "+count+" uoc la so nguyen to");

}
public static void main(String[] args) {
System.out.print("Nhap n");
int n= nhap(); lietKeUoc(n); lietKeUocSNT(n);

}

}

Bài 23:

package bai23;
import java.util.Scanner; public class Main {
public static int nhap(){
Scanner input= new Scanner(System.in); boolean check= false;
int n=0; while(!check){
System.out.print(" "); try{
n= input.nextInt(); check= true;

}catch(Exception e){
System.out.println("Ban phai nhap so! hay nhap lai..."); input.nextLine();

}

}
return (n);

}
public static boolean checkSNT(int n){
if(n>1){
for(int i=2;i<=Math.sqrt(n);i++){ if(n%i==0) return false;

}
return true;

}
else return false;
}
public static void lietKeSNT(int n){
int i=1,count=0;
System.out.println("Cac so nguyen to nho hon "+n+" la: "); while(i<n){
if(checkSNT(i)){
System.out.print(" "+i); count++;

} i++;

}
System.out.println("\n Co "+count+" so thoa man");

}
public static void main(String[] args) {
System.out.print("Nhap n");
int n= nhap(); lietKeSNT(n); int[] f= new int[n]; f[0]= 1; f[1]= 1;
int i=1;
System.out.print("Cac so Fibonanci nho hon "+n+" la : \n 1"); while(f[i]<n){
System.out.print(" "+f[i]);
i++;
f[i]= f[i-1] + f[i-2];

}
System.out.println("\n Co "+i+" so thoa man");

}

}

Bài 24:

package bai24;
import java.util.Scanner; public class Main {
public static int nhap(){
Scanner input= new Scanner(System.in);
boolean check= false;

int n=0;
while(!check){

System.out.print(" ");
try{

n= input.nextInt();
check= true;


}catch(Exception e){
System.out.println("Ban phai nhap so! hay nhap lai...");
input.nextLine();


}

}
return (n);

}
public static boolean checkSNT(int n){
if(n>1){
for(int i=2;i<=Math.sqrt(n);i++){
if(n%i==0) return false;


}
return true;

}
else return false;

}
public static void inMT(int[][] A, int n, int m){
int i,j;

for(i=0 ; i<n ; i++){
System.out.print("\n");
for(j=0 ; j<m ; j++) System.out.print(" "+A[i][j]);

}

}
public static int findMaxMT(int[][] A, int n, int m){
int Max= A[0][0];

for(int i=0 ; i<n ; i++){
for(int j=0 ; j<m ; j++){
if(Max<A[i][j]) Max= A[i][j];

}

}
return (Max);

}
//Tim nhung phan tu la SNT
public static void phanTuSNT(int[][] A, int n, int m){
int count=0,i,j;

System.out.println("\nCac phan tu la SNT (nhung phan tu ko la SNT =0): ");
for(i=0 ; i<n ; i++){

System.out.print("\n");
for(j=0 ; j<m ; j++){

if(checkSNT(A[i][j])){
count++;

System.out.print(" "+A[i][j]);

}
else System.out.print(" "+0);

}

}
System.out.println("\n Co "+count+" phan tu la so nguyen to");

}
//Sap xep cac cot theo thu tang dan
public static void sortColum(int[][] A, int n, int m){
int i,j,temp;

for(j=0 ; j<m ; j++){
for(i=1 ; i<n ; i++){
if(A[i-1][j]>A[i][j]){
temp= A[i-1][j];
A[i-1][j]= A[i][j];

A[i][j]= temp;

}

}

}
inMT(A, n, m);

}
public static void main(String[] args) {
System.out.print("Nhap so hang n=");

int n= nhap();
System.out.print("Nhap so cot m=");
int m= nhap();

int [][] A= new int[n][m];
int i,j;

for(i=0 ; i<n ; i++){
for(j=0 ; j<m ; j++){
System.out.println("Nhap phan tu thu A["+(i+1)+"]["+(j+1)+"]= ");
A[i][j]= nhap();


}

}
System.out.println("Ma tran nhap vao: ");
inMT(A, n, m);

for(i=0 ; i<n ; i++){
for(j=0 ; j<m ; j++){
if(A[i][j]==findMaxMT(A, n, m))System.out.println("\nPhan tu o hang "+i+" cot "+j+" dat Max: A["+i+"]["+j+"]= "+A[i][j]);

}

}
phanTuSNT(A, n, m);
sortColum(A, n, m);


}

}

Bài 25:

package bai25; 
public class Main {

public static boolean checkSNT(int n){
if(n>1){
for(int i=2;i<=Math.sqrt(n);i++){
if(n%i==0) return false;

}
return true;
}
else return false;
}
public static boolean testSoThuanNghich(int n){
StringBuilder xau= new StringBuilder();
String str= ""+n;

xau.append(str);
String check= ""+xau.reverse();
if(str.equals(check)) return true;
else return false;

}
public static boolean nguyenTo(int n){
while(n!=0){

if(!checkSNT(n%10)) return false;
n/= 10;

}
return true;
}
public static void main(String[] args) {
int i,count= 0;

System.out.println("cac so tu 5-7 chu so thoa man dieu kien la: ");
for(i=22223 ; i<7777777 ; i+=2){

if(checkSNT(i) && nguyenTo(i) && testSoThuanNghich(i)){
System.out.println(" "+i); count++;

}
}
System.out.println("\n Co "+count+" so thoa man");
}
}

Bài 26:

package bai26; 
public class Main {

public static boolean checkSNT(int n){
if(n>1){
for(int i=2;i<=Math.sqrt(n);i++){
if(n%i==0) return false;

}
return true;
}
else return false;
}
public static boolean testSoThuanNghich(int n){
StringBuilder xau= new StringBuilder();
String str= ""+n;

xau.append(str);
String check= ""+xau.reverse();
if(str.equals(check)) return true;
else return false;

}
public static boolean nguyenToTong(int n){
int T= 0;

while(n!=0){
T+= n%10;
if(!checkSNT(T)) return false;
n/= 10;

}
return true;
}
public static void main(String[] args) {
int i,count= 0;

System.out.println("cac so tu 5-7 chu so thoa man dieu kien la: ");
for(i=22223 ; i<7777777 ; i+=2){

if(checkSNT(i) && nguyenToTong(i) && testSoThuanNghich(i)){
System.out.println(" "+i); count++;

}
}
System.out.println("\n Co "+count+" so thoa man");
}
}

Bài 27:

package bai27;
import java.util.Arrays;
import java.util.Scanner;
public class Main {

public static int nhap(){
Scanner input= new Scanner(System.in);
boolean check= false;

int n=0;
while(!check){

System.out.print(" ");
try{

n= input.nextInt();
check= true;

}catch(Exception e){
System.out.println("Ban phai nhap so! hay nhap lai...");
input.nextLine();

}
}
return (n);
}
public static int viTriMaxInt(int a[], int n){ int max= a[0];
int key= 0;
for(int j=0 ; j<n ; j++){
if(max<a[j]){
max= a[j];
key= j;

}
}
return (key);
}
public static void inArray(int[] a, int begin , int end){
System.out.println();

int i;
for(i=begin ; i<end ; i++){
System.out.print(" "+a[i]);

}
System.out.println();
}
public static int viTriMax2(int[] a,int n){
int i,key=0,Max2=0;
for(i=0 ; i<n ; i++){

if(a[i]>Max2 && a[i]!= a[viTriMaxInt(a, n)]){
Max2= a[i];key= i;

}
}return (key);
}
public static void themPhanTu(int[] a,int n,int pt){
a[0]= pt;

Arrays.sort(a);
}
public static void main(String[] args) {
System.out.print("Nhap n= ");

int n= nhap();
int[] a= new int[n+1];
int i;

for(i=0 ; i<n ; i++){
System.out.print("\n Nhap phan tu thu "+i+" = ");
a[i]= nhap();

}
for(i=0 ; i<n ; i++){
if(a[i]== a[viTriMax2(a, n)]) System.out.println(" Phan tu thu "+i+" lon thu 2 trong mang a["+i+"]= "+a[i]);
}
Arrays.sort(a); inArray(a,1,n+1);
System.out.print("Nhap phan tu muon them pt= "); int pt= nhap();
themPhanTu(a,n+1,pt); inArray(a,0,n);
}
}

Bài 28:

package bai28;
import java.util.Scanner;
public class Main {

public static int nhap(){
Scanner input= new Scanner(System.in);
boolean check= false;

int n=0;
while(!check){

System.out.print(" ");
try{
n= input.nextInt();
check= true;

}catch(Exception e){
System.out.println("Ban phai nhap so! hay nhap lai...");
input.nextLine();

}
}
return (n);
}
public static void inMT(int[][] A, int n, int m){
int i,j;

for(i=0 ; i<n ; i++){
System.out.print("\n");
for(j=0 ; j<m ; j++) System.out.print(" "+A[i][j]);
}
}
public static int findMaxMT(int[][] A, int n, int m){
int Max= A[0][0];

for(int i=0 ; i<n ; i++){
for(int j=0 ; j<m ; j++){
if(Max<A[i][j]) Max= A[i][j];
}
}
return (Max);
}
public static void main(String[] args) {
System.out.print("Nhap so hang n=");

int n= nhap();
System.out.print("Nhap so cot m=");
int m= nhap();

int [][] A= new int[n][m];
int i,j;

for(i=0 ; i<n ; i++){
for(j=0 ; j<m ; j++){
System.out.println("Nhap phan tu thu A["+(i+1)+"]["+(j+1)+"]= ");
A[i][j]= nhap();

}
}
//In ra ma tran nhap vao
System.out.println("Ma tran nhap vao: ");
inMT(A, n, m);

//Tim phan tu max
for(i=0 ; i<n ; i++){

for(j=0 ; j<m ; j++){
if(A[i][j]==findMaxMT(A, n, m))System.out.println("\nPhan tu o hang "+i+" cot "+j+" dat Max: A["+i+"]["+j+"]= "+A[i][j]);
}
}
}
}

Bài 29:

package bai29;
import java.util.Scanner;
public class Main {

public static int nhap(){
Scanner input= new Scanner(System.in);
boolean check= false;

int n=0; while(!check){
System.out.print(" ");
try{

n= input.nextInt();
check= true;

}catch(Exception e){
System.out.println("Ban phai nhap so! hay nhap lai...");
input.nextLine();

}
}
return (n);
}
public static void horner(int a[], int n){
int T=0,i,x;
System.out.println("\n Nhap x= ");
x= nhap();

T= a[n];
for(i=n ; i>0 ; i--){
T= T*x + a[i-1];
}
System.out.println("Gia tri cua da thuc tinh theo cong thuc Horner la: "+T);
}
public static void inDaThuc(int a[], int n){
int i;

for(i=n ; i>0 ; i--){
System.out.print(" "+a[i]+".x^"+i+" + ");
}
System.out.print(" "+a[0]);
}
public static void daoHam(int a[],int dh[], int n){
int i;

for(i=n ; i>0 ; i--){
dh[i-1]= a[i]*i;
}
inDaThuc(dh,n-1);
}
public static void tongDaThuc(int a[], int n, int b[], int m){
int i;

System.out.println("\n Tong cua 2 da thuc A va B la: ");
if(n>m){

for(i=m ; i>=0 ; i--){
a[i]+=b[i];
}
inDaThuc(a,n);

}
else
for(i=n ; i>=0 ; i--){
b[i]+=a[i];
}
inDaThuc(b,m);
}
public static void main(String[] args) {
int i;

System.out.println("Nhap bac cua da thuc n= ");
int n= nhap();

int[] array= new int[n+1];
for(i=n ; i>=0 ; i--){

System.out.print("Nhap he so cua x^"+i+" = ");
array[i]= nhap();

}
System.out.println("Da thuc A nhap vao la: ");
inDaThuc(array, n);

horner(array, n);
//Tinh dao ham bac 1 int[] dh= new int[n+1]; daoHam(array,dh,n);
//Tinh tong 2 da thuc
System.out.println("\n Nhap bac cua da thuc m= ");
int m= nhap();

int[] array2= new int[m+1];
for(i=m ; i>=0 ; i--){

System.out.print("Nhap he so cua x^"+i+" = ");
array2[i]= nhap();

}
System.out.println("Da thuc B nhap vao la: ");
inDaThuc(array2, m);

tongDaThuc(array, n, array2, m);
}
}

Bài 31:

import java.util.*; 
public class Bai31 {

public static String chuyenInHoa(String str){
String s,strOutput;

s= str.substring(0, 1);
strOutput= str.replaceFirst(s,s.toUpperCase());
return (strOutput);

}
public static String chuanHoa(String strInput){
String strOutput="";

StringTokenizer strToken= new StringTokenizer(strInput," ,\t,\r");
strOutput+=""+chuyenInHoa(strToken.nextToken()); while(strToken.hasMoreTokens()){
strOutput+=" "+chuyenInHoa(strToken.nextToken());
}
return(strOutput);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input= new Scanner(System.in);
System.out.println("Nhap vao 1 xau: ");
String strInput= input.nextLine();

System.out.println("Xau duoc chuan hoa la: "+chuanHoa(strInput));
}
}

Bài 32:

import java.util.*; 
public class Bai32 {

public static void timXauMax(String strInput){
StringTokenizer strToken= new StringTokenizer(strInput," ,\t,\r");
int Max,i=1,lengthStr;

Max= strToken.nextToken().length();
int viTriMax= i;
while(strToken.hasMoreTokens()){

lengthStr= strToken.nextToken().length();
i++;

if(Max < lengthStr){
Max= lengthStr;
viTriMax= i;

}
}
System.out.println("Do dai xau lon nhat la: "+Max+" o vi tri "+viTriMax);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input= new Scanner(System.in);
System.out.println("Nhap vao 1 xau: ");
String strInput= input.nextLine();
timXauMax(strInput);

}
}

Bài 33:

import java.util.*;
public class Bai33 {
public static String doiViTri(String strInput){
String str= Bai31.chuanHoa(strInput);

StringTokenizer strToken= new StringTokenizer(str," ");
String ho = strToken.nextToken();

String hoDem = strToken.nextToken();
String ten = strToken.nextToken();
String strOutput= ten+" "+ho+" "+hoDem;
return(strOutput);

}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input= new Scanner(System.in);

System.out.println("Nhap vao ho ten ( ho-ho dem -ten) : ");
String strInput= input.nextLine();

System.out.println("Ho va ten duoc sap xep lai (ten- ho - ho dem) :
"+doiViTri(strInput));
}
}

Nguồn: An Nguyễn (toptailieu)