Hiển thị các bài đăng có nhãn Nhập Môn. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn Nhập Môn. Hiển thị tất cả bài đăng
ALGOPRO8 - Đếm giày

ALGOPRO8 - Đếm giày

Link Sub: https://www.spoj.com/PTIT/problems/ALGOPRO8/
Người Gửi: Dương Lee

  • Problem:

Một ngày Gấu muốn đếm lại xem hiện tại mình đang có bao nhiêu đôi giày. Sau khi kiểm tra, Gấu có n chiếc giày màu đỏ và m chiếc giày màu xanh.  
Hiện tại Gấu đang theo mốt là mỗi ngày, gấu đeo một chiếc giày màu đỏ sang bên chân trái, chân phải thì đeo chiếc giày màu xanh. Gấu ngại giặt giày nên sau mỗi ngày, Gấu không đeo lại giày mà hôm đó đã dùng. Các bạn giúp Gấu xem là Gấu theo mốt này được bao nhiêu lâu. Sau đó, khi không thực hiện mốt này được nữa thì Gấu sẽ đeo 2 đôi giày cùng màu thì Gấu sẽ có giày đeo được bao nhiêu ngày tiếp theo.
Input
Một dòng duy nhất chứa 2 số nguyên n, m (1 <= n, m <= 100) là số lượng giày màu đỏ và số lượng giày màu xanh.
Output
Gồm 2 số nguyên lần lượt là số ngày Gấu đi mỗi bên một màu và số ngày tiếp theo Gấu đi 2 bên màu giống nhau.
Example:
Input
3 1
Output:
1 1

Input
2 3
Output:
2 0
Input
7 3
Output:
3 2
  • Solution:

Bài này chắc không có gì khó khăn.
- Số đôi đi cọc cạch = min(n, m)

- Số đôi đi đi là một đôi = (max(n, m) - min(n, m))/2

  • Code:

C++:

https://ideone.com/c3z6Be
#include <iostream>
using namespace std;

int main()
{
    int n, m;
    cin>>n>>m;
    int model = min(n, m);
    cout<<model<<" "<<(max(n, m) - model)/2;
    return 0;
}

JAVA:

...

Python:

...
ALGOPRO7 - Số bé thứ k

ALGOPRO7 - Số bé thứ k

Link Sub: https://www.spoj.com/PTIT/problems/ALGOPRO7/
Người Gửi: Dương Lee

  • Problem:

Cho một dãy số nguyên. Bạn hãy tìm số có giá trị thứ k sau khi đã sắp xếp dãy tăng dần.
Input
Dòng đàu chứa 2 số n và k là số phần tử và vị trí cần tìm ( 1 <= n <= 10^5, 0 <= k < n).  Dòng sau chứa n số nguyên là các phần tử của dãy số.
Output
In ra duy nhất 1 số là đáp án của bài toán.
Example:
Input
5 3
5 3 4 8 6
Output:
6

  • Solution:

Chỉ cần dùng sort trong thư viện là ok rồi :v
*Lưu ý: k bắt tính từ 0.

  • Code:

C++:

https://ideone.com/XO6Yw0
#include <iostream>
#include <algorithm>
using namespace std;

int main()
{
    int arr[100005];
    int n, k;
    cin>>n>>k;
    for (int i=0; i<n; i++)
    {
        cin>>arr[i];
    }
    
    sort(arr, arr+n);
    
    cout<<arr[k];
    
    return 0;
}

JAVA:

...

Python:

...
P163SUMH - ROUND 3H - Xúc xắc

P163SUMH - ROUND 3H - Xúc xắc

Link Sub: https://www.spoj.com/PTIT/problems/P163SUMH/
Người Gửi: Dương Lee

  • Problem:

Tí và Tèo đang chơi xúc xắc, mỗi người chọn ra một con số từ 1 đến 6 và sẽ tung xúc xắc để xem giá trị của con xúc xắc gần với con số của người nào hơn. Giá trị x gọi là gấn số a hơn số b nếu |x – a| < |x – b|  
Giờ đây bạn biết 2 con số mà Tí và Tèo đã chọn, hãy tính xem có bao nhiêu giá trị của xúc xắc mà gần số của Tí hơn, bao nhiêu giá trị mà khoảng cách tới 2 con số đã chọn như nhau và bao nhiêu giá trị mà nó gần với số của Tèo hơn và in ra kết quả lần lượt theo thứ tự như trên.
Input
Một dòng duy nhất gồm 2 số nguyên a, b (1 <= a, b <= 6)
Output
Kết quả bài toán.
Example:
Input
2 5
Output:
3 0 3

  • Solution:

Bài này chỉ việc đếm thôi, chạy hết tất cả các trường hợp có thể có của xúc xắc (1->6) và đếm những trường hợp nào gần a hơn, trường hợp nào gần b hơn và bằng nhau.

  • Code:

C:

https://ideone.com/I2191f
#include <stdio.h>
#include <math.h>

int main()
{
    int a, b;
    scanf("%d%d", &a, &b);
    int ganA=0, ganB=0, bang=0;
    for (int i=1; i<=6; i++)
    {
        if (abs(a-i)<abs(b-i)) ganA++;
        else if (abs(a-i)>abs(b-i)) ganB++;
        else bang++;
    }
    printf("%d %d %d", ganA, bang, ganB);
    return 0;
}

C++:

...

JAVA:

...

Python:

...
P151SUMB - ROUND 1B - Đong gạo

P151SUMB - ROUND 1B - Đong gạo

Link Sub: https://www.spoj.com/PTIT/problems/P151SUMB/
Người Gửi: Dương Lee

  • Problem:

Tuyenlv7 bị mẹ giao cho nhiệm vụ đó là đong gạo để mang lên nhà trọ. Anh được mẹ đưa cho 2 loại bịch, là loại 5 kg và 3 kg. Tuyenlv7 sẽ phải đong đủ số gạo mà mẹ cho vào 2 loại bịch trên.  
Ví dụ mẹ cho 18 kg thì Tuyenlv7 có thể đong bằng 3 bịch 5kg + 1 bịch 3kg hoặc 6 bịch 3 kg.  
Hãy giúp anh ấy đong với số lượng bịch ít nhất có thể, nếu không thể đong được, in ra -1.
Input
Dòng duy nhất chứ số N là số gạo mẹ Tuyenlv7 cho ( 0 < N < 5000).
Output
In ra đáp án của bài toán.
Example:
Input
18
Output:
4

  • Solution:

Vì các bao chứa gạo đều là số nguyên tố, vậy nên với m(kg) gạo nếu chia được ta luôn có:
m = i*3 + j*5
->CT1: j = (m-i*3)/5 (hoặc CT2: i = (m-j*5)/3) (trong đó i là số bao 3kg, j là số bao 5 kg)
Với công thức trên ta chỉ cần for() với từng trường hợp của  i (hoặc j) và xét thêm điều kiện j nguyên (hoặc i nguyên) đối với CT1 (hoặc CT2) là đã xét được đầy đủ các trường hợp có thể chia ra các Bao
Việc còn lại là chỉ cần xác định trường hợp nào là ít bao nhất bằng phép tính: số bao gạo = i+j

  • Code:

C:

https://ideone.com/Cpxb9T
#include <stdio.h>

int main()
{
    int N;
    scanf("%d", &N);
    
    int minB = 5000;
    for (int i=0; i<=(N/3); i++)
    {
        int kg = i*3;
        int kgRe = N - (kg);
        if (kgRe%5==0)
        {
            int B = i+kgRe/5;
            if (B<minB)
            {
                minB = B;
            }
        }
    }
    if (minB==5000)
        printf("-1");
    else
        printf("%d", minB);
    return 0;
}

C++:

...

JAVA:

...

Python:

...
P145PROC - ROUND 5C - Modulo

P145PROC - ROUND 5C - Modulo

Link Sub: http://www.spoj.com/PTIT/problems/P145PROC/
Người Gửi: Dương Lee

  • Problem:

Cho 2 số nguyên A và B, A modulo B là phần dư của A khi chia cho B. Ví dụ, 7, 14, 27 và 38 lần lượt là 1, 2 , 0 và 2 theo modulo 3.  
Cho trước một dãy số có 10 phần tử. Bạn hãy viết chương trình tính số lượng số giá trị khác nhau trong dãy sau khi lấy modulo 42.
Input
Gồm 10 số nguyên không âm <= 1000.
Output
Ghi ra một số nguyên duy nhất là số lượng giá trị có trong dãy số sau khi lấy MOD 42.
Example:
Input
1
2
3
4
5
6
7
8
9
10
Output:
10

Input
42
84
252
420
840
126
42
84
420
126
Output:
1
Input
39
40
41
42
43
44
82
83
84
85
Output:
6
  • Solution:

Cách đơn giản nhất để làm bài này đó là sử dụng mảng đánh dấu.
Nhận thấy rằng khi chia lấy dư cho 42 các giá trị chỉ nhận nguyên ở trong đoạn [0, 41]. Vậy nên ta tạo mảng dd[42]={0} (có ít nhất 42 phần tử đều bằng 0), mỗi lần tính toán ta đánh dấu dd[A%42]=1. Sau đó ta chỉ việc đếm xem trong mảng dd [0, 41] có bao nhiêu số đã được đánh dấu.
VD đối với 5 số:
1
1
3
3
42
-> dd[0]=1, dd[1]=1, dd[2]=0, dd[3]=1, dd[4]=0, dd[5] =0,...

  • Code:

C:

https://ideone.com/LUbcJe
#include <stdio.h>

int main ()
{
    int dd[43]={0};
    int A;
    for (int i=1; i<=10; i++)
    {
        scanf("%d", &A);
        dd[A%42]=1;
    }
    int dem = 0;
    for (int i=0; i<42; i++)
    {
        if (dd[i]==1)
            dem++;
    }
    printf ("%d", dem);
    return 0;
}

C++:

...

JAVA:

...

Python:

...
P146PROC - ROUND 6C - Bút màu

P146PROC - ROUND 6C - Bút màu

Link Sub: http://www.spoj.com/PTIT/problems/P146PROC/
Người Gửi: Dương Lee

  • Problem:

Tí nhờ mẹ đi mua bút màu để chuẩn bị cho giờ vẽ tranh trên lớp. Tí dặn mẹ mua 4 bút màu khác nhau, nhưng mẹ Tí lại quên mất, chỉ nhớ là mua 4 cái bút màu cho Tí.  
Về đến nhà, Tí bắt đền mẹ vì đã không mua đủ 4 màu cho Tí. Tí đòi mẹ ra hiệu sách mua thêm, để có đủ 4 màu vẽ cho ngày mai.  
Các bạn hãy tính xem mẹ Tí cần mua thêm ít nhất bao nhiêu chiếc bút màu?
Input
Một dòng duy nhất gồm 4 số nguyên s1, s2, s3, s4 (1<= s1, s2, s3, s4 <= 10^9) thể hiện màu của 4 chiếc bút mà mẹ vừa mới mua cho Tí.
Output
In ra số lượng bút màu ít nhất cần mua thêm cho Tí.
Example:
Input
1 7 3 3
Output:
1

Input
7 7 7 7
Output:
3
  • Solution:

Bài này thực chất là bạn đếm số các số khác nhau và kết quả = 4-số đó.

  • Code:

C:

https://ideone.com/FkgO2U
#include <stdio.h>

int main ()
{
    int n = 0;
    int arr[5];
    int tmp;
    for (int i=1; i<=4; i++)
    {
        scanf("%d", &tmp);
        int kt = 0;
        for (int i=1; i<=n; i++)
        {
            if (tmp==arr[i])
            {
                kt = 1;
                break;
            }
        }
        if (kt==0)
        {
            n++;
            arr[n]=tmp;
        }
    }
    printf ("%d", 4-n);
    return 0;
}

C++:

...

JAVA:

...

Python:

...
P166SUMI - ROUND 6I - Rick Flag

P166SUMI - ROUND 6I - Rick Flag

Link Sub: http://www.spoj.com/PTIT/problems/P166SUMI/
Người Gửi: Dương Lee

  • Problem:

Trong hành trình giải cứu Amanda Waller, Slipknot đã bỏ trốn và ngay lập tức hắn bị Rick Flag tiêu diệt bằng cách bấm nút kích hoạt bom ở ngay trên tay. Sau một thời gian chiến đấu, Rick Flag không biết màn hình kích hoạt bom của mình còn hoạt động đúng không. Các bạn hãy kiểm tra giúp Rick Flag nhé.  
Biết rằng, màn hình kích hoạt bom của Rick Flag có n nút đại diện cho n người, mỗi nút gồm 2 trạng thái 0 là đã ấn nút cho nổ bom, 1 là chưa ấn nút. Nếu màn hình còn hoạt động tốt thì trong n nút sẽ chỉ có duy nhất một nút ở trạng thái 0.
Input
Dòng đầu tiên là số nguyên n (2 <= n <= 1000)  
Dòng tiếp chứa n số nguyên, mỗi số nguyên có giá trị 0 hoặc 1.
Output
In ra “YES” nếu màn hình còn hoạt động đúng và “NO” trong trường hợp còn lại.
Example:
Input
3
1 0 1
Output:
YES

  • Solution:

Bài này khá là giản đơn thôi. Bạn chỉ việc đếm số lượng số 0, nếu số lượng số 0 bằng 1 thì là YES, không thì sẽ là NO.

  • Code:

C++:

https://ideone.com/bEBHJ5
#include <iostream>
using namespace std;

int main ()
{
    int n;
    cin>>n;
    int dem_0 = 0;
    int dem_1 = 0;
    int tmp;
    for (int i=1; i<=n; i++)
    {
        cin>>tmp;
        if (tmp==0)
            dem_0++;
        else
            dem_1++;
    }
    if (dem_0==1)
        cout<<"YES";
    else
        cout<<"NO";
    return 0;
}

JAVA:

...

Python:

...
BCTOHOP - Sinh tổ hợp (Cơ bản)

BCTOHOP - Sinh tổ hợp (Cơ bản)

Link Sub: http://www.spoj.com/PTIT/problems/BCTOHOP/
Người Gửi: Dương Lee

  • Problem:

Một tổ hợp chập k của n là một tập con k phần tử của tập n phần tử.
Chẳng hạn tập {1, 2, 3, 4} có các tổ hợp chập 2 là:
{1, 2}, {1, 3}, {1, 4}, {2, 3}, {2, 4}, {3, 4}
Vì trong tập hợp các phần thử không phân biệt thứ tự nên tập {1, 2} cũng là tập {2, 1}, do đó ta coi chúng chỉ là một tổ hợp.
Bạn hãy sinh hết tổ hợp chập của n phần tử, n phần tử gồm các số nguyên từ 1 đến n.
Các tập con in ra theo thứ tự từ điển. Ví dụ: {1, 2, 3, 4} < {1, 3, 2 4}.

Input
Một dòng duy nhất gồm 2 số nguyên n, k (1 <= k <= n <= 10)
Output
Mỗi một tổ hợp chập k in ra trên một dòng.
Example:
Input
4 2
Output:
1 2
1 3
1 4
2 3
2 4
3 4

  • Solution:

Code C: Sinh hoán vị thông thường; 
- Khởi tạo cấu hình ban đầu: 1 2 3 ... k; 
- Tìm vị trí mà tại đó phần tử [i] chưa đạt cấu hình cuối (!=n-k+i). Nếu không tìm thấy thì đã đạt cấu hình cuối (stop). 
- Tăng [i]++; và các phần tử sau nó [i+1]= [i]+1, [i+2]=[i]+2, ...

  • Code:
C:


C++:



JAVA:


BCQUEUE - Cấu trúc dữ liệu hàng đợi (queue) (Cơ bản)

BCQUEUE - Cấu trúc dữ liệu hàng đợi (queue) (Cơ bản)

Link Sub: http://www.spoj.com/PTIT/problems/BCQUEUE/
Người Gửi: Dương Lee

  • Problem:

Ban đầu cho một queue rỗng. Bạn cần thực hiện các truy vấn sau:
  1. Trả về kích thước của queue
  2. Kiểm tra xem queue có rỗng không, nếu có in ra “YES”, nếu không in ra “NO”.
  3. Cho một số nguyên và đẩy số nguyên này vào cuối queue.
  4. Loại bỏ phần tử ở đầu queue nếu queue không rỗng, nếu rỗng không cần thực hiện.
  5. Trả về phần tử ở đầu queue, nếu queue rỗng in ra -1.
  6. Trả về phần tử ở cuối queue, nếu queue rỗng in ra -1.

Input
Dòng đầu tiên chứa số nguyên n - lượng truy vấn (1 <= n <= 1000)  
N dòng tiếp theo, mỗi dòng sẽ ghi loại truy vấn như trên, với truy vấn loại 3 sẽ có thêm một số nguyên, không quá 10^6.
Output
In ra kết quả của các truy vấn.
Example:
Input
14
3 1
3 2
3 3
5
6
4
4
4
4
4
3 5
3 6
5
1
Output:
1
3
5
2

  • Solution:

Đây là bài cấu trúc dữ liệu cơ bản. 
Sơ lược qua: 
- Một queue gổm mảng giá trị, front (phần tử đầu tiên) và back (phần tử cuối cùng). 
- Hoạt động theo cơ chế FIFO: Vào trước tiên ra đầu tiên

  • Code:
C:



C++:



JAVA:


BCGCD - Ước chung lớn nhất, bội chung nhỏ nhất (Cơ bản)

BCGCD - Ước chung lớn nhất, bội chung nhỏ nhất (Cơ bản)

Link Sub: http://www.spoj.com/PTIT/problems/BCGCD/
Người Gửi: Dương Lee

  • Problem:

Tìm UCLN và BCNN của 2 số.

Input
Gồm nhiều test, mỗi test trên 1 dòng chứa 2 số nguyên dương không quá 2^31  
Bộ test kết thúc bởi dòng chứa 2 số 0.
Output
Mỗi test xuất ra trên 1 dòng chứa 2 số cách nhau bởi dấu cách lần lượt là UCLN và BCNN.
Example:
Input
2 4
6 9
0 0
Output:
2 4
3 18

  • Solution:

UCLN: Áp dụng phép chia lấy dư trong giải thuật Euclid. 
BCNN: Áp dụng công thức UCLN(a,b) = (a*b)/(BCNN(a,b)) trong giải thuật Euclid.

  • Code:
C:



C++:



JAVA:


BCSTACK - Cấu trúc dữ liệu ngăn xếp (stack) (Cơ bản)

BCSTACK - Cấu trúc dữ liệu ngăn xếp (stack) (Cơ bản)

Link Sub: http://www.spoj.com/PTIT/problems/BCSTACK/
Người Gửi: Dương Lee

  • Problem:

Bài này sẽ luyện cho bạn các thao tác cài đặt cấu trúc dữ liệu ngăn xếp (stack). 
Nếu đã cài đặt thành công, hãy tìm hiểu cách sử dụng container stack trong STL và cài đặt nó.  
Thao tác:  
-          1. ‘init’ : Khởi tạo stack rỗng.  
-          2. ‘push x’: Thêm phần tử x vào stack. (x là số nguyên dương không quá 10 mũ 9)  
-          3. ‘pop’: Nếu stack không rỗng lấy ra phần tử ở đỉnh stack.  
-          4. ‘top’: Trả về phần tử ở đỉnh stack. Nếu stack rỗng, trả về -1.  
-          5. ‘size:’ Trả về kích thước stack (số phần tử hiện tại của stack).  
-          6. ‘empty’: Kiểm tra stack rỗng hay không, nếu rỗng trả về 1, ngược lại là 0.  
-          7. ‘end’: Kết thúc chương trình.

Input
Gồm nhiều dòng mô tả các thao tác như trên (số phần tử của stack luôn không quá 1000).
Output
Khi gặp các thao tác 4,5,6 các bạn in ra trên 1 dòng tương ứng với câu trả lời.
Example:
Input
init
empty
push 2
empty
top
push 1
size
top
pop
top
init
push 1
top
init
top
end
Output:
1
0
2
2
1
2
1
-1

  • Solution:

Đây là bài cấu trúc dữ liệu cơ bản.
Sơ lược qua:
- Stack có dạng: mảng chứa các giá trị và Top để lấy phần tử ở đỉnh stack và kiểm tra stack.
- Họat động theo cơ chế: Vào cuối cùng thì ra đầu tiên.

  • Code:
C:



C++:



JAVA:


BCSAPXEP - Sắp xếp (Cơ bản)

BCSAPXEP - Sắp xếp (Cơ bản)

Link Sub: http://www.spoj.com/PTIT/problems/BCSAPXEP/
Người Gửi: Dương Lee

  • Problem:

Sắp xếp dãy tăng dần.

Input
- Dòng đầu chứa số n ( số phần tử của dãy 1<=n<=1000)  
- n dòng sau, mỗi dòng là 1 phần tử của dãy (giá trị tuyệt đối không quá 1000)
Output
Mỗi phần tử của dãy in trên 1 dòng, theo thứ tự tăng dần.
Example:
Input
3
3
2
1
Output:
1
2
3

  • Solution:

Code C:
Sắp xếp nổi bọt. Với mỗi phần tử [i] chọn được (i: 0 -> n-1) thì sẽ đẩy nó lên trên cao nhất có thể (SX: tăng dần hoặc giảm dần).

  • Code:
C:



C++:



JAVA:


BCPERMU - Liệt kê hoán vị (Cơ bản)

BCPERMU - Liệt kê hoán vị (Cơ bản)

Link Sub: http://www.spoj.com/PTIT/problems/BCPERMU/
Người Gửi: Dương Lee

  • Problem:

Liệt kê hoán vị của n phần tử của một tập gồm các số từ 1->n.

Input
Dòng duy nhất chứa số n (1<=n<=8)
Output
Các hoán vị sắp xếp theo thứ tự từ điển tăng dần.
Example:
Input
3
Output:
123
132
213
231
312
321

  • Solution:

Code C: 
- Sinh hoán vị thông thường: 
+ Khởi tạo cấu hình ban đầu: 1 2 3 ... n 
+ Tìm vt mà tại đó dãy mất tính tăng (vt: n-1 -> 0): Nếu không tìm thấy thì dãy đã đạt cấu hình cuối (Kết thúc). 
+ Tìm phần tử [i] đầu tiên > phần tư [vt] và đổi chỗ chúng (i: n-1 -> 0). 
+ Sau khi đổi chỗ thì cập nhập lại tất cả các phần tử sau vt tăng dần (i: vt+1 -> n-1).

  • Code:
C:



C++:



JAVA:


BCSINH - Sinh các dãy nhị phân độ dài n (Cơ bản)

BCSINH - Sinh các dãy nhị phân độ dài n (Cơ bản)

Link Sub: http://www.spoj.com/PTIT/problems/BCSINH/
Người Gửi: Dương Lee

  • Problem:

Sinh các dãy nhị phân có độ dài n.

Input
Số nguyên duy nhất n (1<=n<=9)
Output
Mỗi dòng một dãy nhị phân. Các dãy nhị phân phải được liệt kê theo thứ tự từ điển.
Example:
Input
2
Output:
00
01
10
11

  • Solution:

Code C: 
- Sinh Quay Lui: 
+ Cấu hình ban đầu là 0 0 ... 0; 
+ Mỗi phần tử [i] của mảng chỉ nhận 2 giá trị 0 và 1. 
+ Đầu tiên mỗi phần tử sẽ nhận giá trị là 0; 
+ Khi mỗi lần mảng đến giá trị cuối i=n thì in ra và quay lui lại i=n-1 để nhận giá trị tiếp theo là 1 và các phần tử sau quay lại B2. Nếu phần tử i=n-1 đã là giá trị 1 thì tiếp tục lùi i--; 
+ Dưng lại khi đạt cấu hình cuối 1 1 .. 1

  • Code:
C:



C++:



JAVA:


BCFACT - Giai thừa (Cơ bản)

BCFACT - Giai thừa (Cơ bản)

Link Sub: http://www.spoj.com/PTIT/problems/BCFACT/
Người Gửi: Dương Lee

  • Problem:

Tính n!

Input
Mỗi test trên 1 dòng chứa duy nhất một số nguyên dương n (n<=17).
Bộ test kết thúc bởi 1 dòng chứa số 0.
Output
Mỗi test xuất ra trên 1 dòng chứa kết quả n!
Example:
Input
2
3
0
Output:
2
6

  • Solution:

Code C:
- Dùng đệ quy tính n! = (n-1)!*n = (n-2)!*(n-1)*n =...

  • Code:
C:



C++:



JAVA:


BCPALIN - Số đối xứng (Cơ bản)

BCPALIN - Số đối xứng (Cơ bản)

Link Sub: http://www.spoj.com/PTIT/problems/BCPALIN/
Người Gửi: Dương Lee

  • Problem:

Số nguyên n gọi là số đối xứng nếu đọc từ trái qua phải, hay từ phải qua trái đều được số giống nhau. Ví dụ: 11,121,101 là các số đối xứng.  Yêu cầu: Cho số n, xác định xem n có phải là số đối xứng hay không.

Input
- Dòng đầu chứa số bộ test  
- Mỗi dòng sau chứa 1 bộ test gồm duy nhất số nguyên dương n (n<=10^9)
Output
Với mỗi bộ test, xuất ra trên 1 dòng: “YES” nếu là số đối xưng, ngược lại là “NO”.
Example:
Input
3
101
111
100
Output:
YES
YES
NO

  • Solution:

Code C: 
- Chuyển n -> thành mảng các chữ số. (sử dụng toán tử % và /) 
- Duyệt 2 đầu của mảng về giữa: Nếu có một cặp khác nhau thì không phải số đối xứng.

  • Code:
C:



C++:



JAVA:


BCFACTOR - Phân tích ra thừa số nguyên tố (Cơ bản)

BCFACTOR - Phân tích ra thừa số nguyên tố (Cơ bản)

Link Sub: http://www.spoj.com/PTIT/problems/BCFACTOR/
Người Gửi: Dương Lee

  • Problem:

Cho số nguyên dương n (2<=n<=10^9) , hãy phân tích n ra thừa số nguyên tố.

Input
Một dòng duy nhất chứa số n.
Output
Mỗi dòng ghi một thừa số nguyên tố và số mũ tương ứng cách nhau bởi dấu cách.  Các thừa số nguyên tố in ra theo thứ tự tăng dần.
Example:
Input
4
Output:
2 2

Input
168
Output:
2 3
3 1
7 1
  • Solution:

Code C:
- Tìm tất cả các ước của N trong khoảng [2,sqrt(N)];
- Với mỗi ước: kiểm tra xem có phải số nguyên tố hay không?
- Với mỗi ước nguyên tố: đếm xem N chia tối đa được bao nhiêu ước nt đó. (Sau mỗi lần chia thì N sẽ thay đổi)

  • Code:
C:



C++:



JAVA: