This repository has been archived by the owner on Feb 15, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
f7d106b
commit ac3d700
Showing
7 changed files
with
445 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,79 @@ | ||
#include <iostream> | ||
#include <string.h> | ||
#include <stdio.h> | ||
using namespace std; | ||
#define MAX 300 | ||
|
||
int myStrlen(char s[], int k); // Ham tra ve chieu dai chuoi s ke tu vi tri k | ||
void myMemmove(char s[], int vt, int k); // Xoa k ky tu trong chuoi s, bat dau tu vi tri vt. | ||
int myStrstr(char s[], char s1[]); // Tim chuoi s1 trong chuoi s, neu tim thay tra ve vi tri s1[0] trong chuoi s, khong tin thay tra ve -1 | ||
void Chuanhoa(char s[]); | ||
|
||
int main() | ||
{ | ||
char s[MAX]; | ||
fgets(s, MAX, stdin); // Nhap chuoi s | ||
Chuanhoa(s); | ||
cout << s << endl; | ||
return 0; | ||
} | ||
|
||
int myStrlen(char s[], int k) | ||
{ | ||
int i = k; | ||
while (s[i]) | ||
++i; | ||
return i - k + 1; | ||
} | ||
|
||
void myMemmove(char s[], int vt, int k) | ||
{ | ||
int n = myStrlen(s, 0); | ||
for (int i = vt; i <= n - k; ++i) | ||
s[i] = s[i + k]; | ||
} | ||
|
||
int myStrstr(char s[], char s1[]) | ||
{ | ||
int n = myStrlen(s, 0); | ||
int n1 = myStrlen(s1, 0); | ||
for (int i = 0; i <= n - n1; ++i) | ||
{ | ||
int j = 0; | ||
while (s[i + j] == s1[j]) | ||
++j; | ||
if (j == n1) | ||
return i; | ||
} | ||
return -1; | ||
} | ||
|
||
void Chuanhoa(char s[]) | ||
{ | ||
int n = myStrlen(s, 0); | ||
|
||
for (int i = 0; i < n; ++i) | ||
if (s[i] == ' ' && s[i + 1] == ' ') | ||
{ | ||
myMemmove(s, i, 1); | ||
--i; | ||
} | ||
|
||
n = myStrlen(s, 0); | ||
if (s[0] == ' ') | ||
myMemmove(s, 0, 1); | ||
if (s[n] == ' ') | ||
myMemmove(s, n, 1); | ||
|
||
n = myStrlen(s, 0); | ||
for (int i = 0; i <= n; ++i) | ||
if (s[i] >= 'A' && s[i] <= 'Z') | ||
s[i] += 32; | ||
|
||
if (s[0] >= 'a' && s[0] <= 'z') | ||
s[0] -= 32; | ||
|
||
for (int i = 0; i < n; ++i) | ||
if (s[i] == ' ' && s[i + 1] >= 'a' && s[i + 1] <= 'z') | ||
s[i + 1] -= 32; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
# CHUẨN HOÁ CHUỖI DẠNG HỌ TÊN | ||
|
||
> Problem 8.03 | ||
- Viết chương trình chuẩn hóa câu theo dạng họ tên, biết rằng các tiếng trong câu cách nhau một khoảng trắng; đầu câu và cuối câu không có khoảng trắng; ký tự đầu tiên của mỗi tiếng viết hoa, các ký tự còn lại viết thường. | ||
|
||
> **Important** | ||
> | ||
> Lưu ý: Trình biên dịch hiện tại của hệ thống wecode đối với hàm fgets(s, MAX, stdin) sẽ lấy luôn ký tự '\n' hoặc '\r' từ bàn phím. | ||
## YÊU CẦU | ||
|
||
| INPUT | OUTPUT | | ||
| :-------: | :--------------------: | | ||
| `Chuỗi s` | `Chuỗi s đã chuẩn hóa` | | ||
|
||
## VÍ DỤ | ||
|
||
| INPUT | OUTPUT | | ||
| :-------------: | :-------------: | | ||
| `nGUYEN VaN aN` | `Nguyen Van An` | | ||
|
||
## BAN KEYWORDS | ||
|
||
- define | ||
- include | ||
- class | ||
- strlen | ||
- strcat | ||
- string | ||
- strcmp | ||
- strcpy | ||
- memmove | ||
- strstr |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
# NGÀY THÁNG | ||
|
||
- Bộ phận chống buôn lậu và làm hàng giả chặn được một thông báo đã mã hóa của nhóm nghi can đang bị theo dõi. Chìa khóa giải mã thông báo nằm ở đoạn thông báo ngày tháng năm và có dạng YYYY MM DD, trong đó Y, M, D là các ký tự số. Khóa để giải mã là một ngày, tháng năm đúng nhận được bằng cách đổi chổ các ký tự số trong đoạn nói trên. | ||
|
||
- Một ngày tháng năm là đúng nếu 3 số nhận được đều lớn hơn không và tương ứng với một ngày trong lịch đang dùng. Với năm nhuận tháng 2 có 29 ngày. Năm nhuận là năm chia hết cho 400 hoặc không chia hết cho 100 nhưng chia hết cho 4. Riêng những năm lớn hơn 0 và là bội của 3328 là những năm nhuận đặc biệt, tháng 2 sẽ có 30 ngày. | ||
|
||
## YÊU CẦU | ||
|
||
- Cho đoạn thông báo tách được. Hãy xác định số lượng ngày tháng hợp lý có thể rút ra từ thông báo và đưa ra các ngày tháng đó theo thứ tự tăng dần trên lịch. Ngày tháng năm đưa ra dưới dạng YYYY MM DD (xem ví dụ). | ||
|
||
- Dữ liệu: Vào từ thiết bị nhập chuẩn gồm một dòng chứa xâu 10 ký tự dạng: | ||
|
||
- YYYY MM DD. | ||
|
||
- Kết quả: Đưa ra thiết bị xuất chuẩn: | ||
|
||
- Dòng đầu tiên chứa một số nguyên – số lượng ngày tháng hợp lệ, | ||
- Mỗi dòng trong các dòng sau – một ngày tháng hợp lệ tìm được. Thông tin đưa ra theo thứ tự tăng dần trên lịch. | ||
|
||
## VÍ DỤ | ||
|
||
| INPUT | OUTPUT | | ||
| ----------- | ------------ | | ||
| `001 01 01` | `16` | | ||
| | `0001 01 01` | | ||
| | `0001 01 10` | | ||
| | `0001 10 01` | | ||
| | `0001 10 10` | | ||
| | `0010 01 01` | | ||
| | `0010 01 10` | | ||
| | `0010 10 01` | | ||
| | `0010 10 10` | | ||
| | `0100 01 01` | | ||
| | `0100 01 10` | | ||
| | `0100 10 01` | | ||
| | `0100 10 10` | | ||
| | `1000 01 01` | | ||
| | `1000 01 10` | | ||
| | `1000 10 01` | | ||
| | `1000 10 10` | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,115 @@ | ||
#include <iostream> | ||
using namespace std; | ||
struct Ngay | ||
{ | ||
int Ngay; | ||
int Thang; | ||
int Nam; | ||
}; | ||
typedef struct Ngay NGAY; | ||
int ktNhuan(NGAY x); | ||
int SoNgayToiDaTrongThang(NGAY x); | ||
int SoNgayToiDaTrongNam(NGAY x); | ||
int SoThuTu(NGAY x); | ||
int SoThuTuTrongNam(NGAY x); | ||
int XuatThu(NGAY x); | ||
NGAY TimNgay(int stt); | ||
NGAY TimNgay(int nam, int stt); | ||
|
||
int main() | ||
{ | ||
int x; | ||
cin >> x; | ||
int y; | ||
cin >> y; | ||
NGAY i; | ||
cin >> i.Thang; | ||
cin >> i.Nam; | ||
NGAY temp = {1, i.Thang, i.Nam}; | ||
int s = SoThuTu(temp); | ||
int k = XuatThu(temp); | ||
int dem; | ||
if (k == y) | ||
dem = 1; | ||
else | ||
dem = 0; | ||
int l = 2; | ||
for (l; dem < x && l < SoNgayToiDaTrongThang(temp); l++) | ||
{ | ||
NGAY ao = {l, i.Thang, i.Nam}; | ||
if (y == XuatThu(ao)) | ||
dem++; | ||
} | ||
if (dem < x) | ||
cout << "-1"; | ||
else | ||
cout << l - 1; | ||
} | ||
|
||
int ktNhuan(NGAY x) | ||
{ | ||
if (x.Nam % 4 == 0 && x.Nam % 100 != 0) | ||
return 1; | ||
if (x.Nam % 400 == 0) | ||
return 1; | ||
return 0; | ||
} | ||
|
||
int SoNgayToiDaTrongThang(NGAY x) | ||
{ | ||
int ngaythang[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; | ||
if (ktNhuan(x) == 1) | ||
ngaythang[1] = 29; | ||
return ngaythang[x.Thang - 1]; | ||
} | ||
|
||
int SoNgayToiDaTrongNam(NGAY x) | ||
{ | ||
if (ktNhuan(x) == 1) | ||
return 366; | ||
return 365; | ||
} | ||
|
||
int SoThuTu(NGAY x) | ||
{ | ||
int stt = 0; | ||
for (int i = 1; i <= x.Nam - 1; i++) | ||
{ | ||
NGAY temp = {1, 1, i}; | ||
stt = stt + SoNgayToiDaTrongNam(temp); | ||
} | ||
return (stt + SoThuTuTrongNam(x)); | ||
} | ||
|
||
int SoThuTuTrongNam(NGAY x) | ||
{ | ||
int stt = 0; | ||
for (int i = 1; i <= x.Thang - 1; i++) | ||
{ | ||
NGAY temp = {1, i, x.Nam}; | ||
stt = stt + SoNgayToiDaTrongThang(temp); | ||
} | ||
return (stt + x.Ngay); | ||
} | ||
|
||
int XuatThu(NGAY x) | ||
{ | ||
int stt = SoThuTu(x); | ||
switch (stt % 7) | ||
{ | ||
case 0: | ||
return 8; | ||
case 1: | ||
return 2; | ||
case 2: | ||
return 3; | ||
case 3: | ||
return 4; | ||
case 4: | ||
return 5; | ||
case 5: | ||
return 6; | ||
case 6: | ||
return 7; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
# NGÀY LỄ | ||
|
||
- Một số ngày lễ được kỷ niệm vào một ngày tháng cố định nào đó trong năm như ngày tình nhân luôn luôn là ngày 14/02 hàng năm. Tuy nhiên cũng có một số ngày kỷ niệm được gắn với "ngày thứ" và tuần của mỗi tháng. Ví dụ như ngày của mẹ (Mother's day) là ngày chủ nhật thứ nhì trong tháng 5. Với năm 2017, ngày của mẹ là ngày 14/05/2017 nhưng trong năm 2016 lại là ngày 08/05/2016. | ||
|
||
## YÊU CẦU | ||
|
||
- Hãy viết chương trình tính ngày tháng năm cho ngày kỷ niệm. | ||
|
||
- Input gồm 4 con số nguyên dương trên một hàng với ý nghĩa và thứ tự lần lượt là: | ||
|
||
- Số x, cho biết ngày lễ được kỷ niệm vào lần mấy trong tháng của "ngày thứ" đó. | ||
- Số y, cho biết ngày lễ kỷ niệm vào "thứ" mấy trong tuần. y sẽ mang các giá trị lần lượt từ 2 đến 8. Tương ứng với, thứ hai, thứ ba, thứ tư, thứ năm, thứ sáu, thứ bảy và chủ nhật. | ||
- Số i, cho biết ngày đó được kỷ niệm vào tháng mấy. | ||
- Số j, cho biết năm nay là năm bao nhiêu. | ||
|
||
- Output | ||
- Cho biết ngày lễ sẽ được kỷ niệm vào ngày bao nhiêu của tháng i - năm j. Nếu không có ngày như vậy thì kết quả là -1. | ||
|
||
# VÍ DỤ | ||
|
||
| INPUT | OUTPUT | GIẢI THÍCH | | ||
| :------------------: | :----: | :--------------------------------------------------------------------------------------------------- | | ||
| 3<br>4<br>11<br>2016 | 16 | Tháng 11, năm 2016 có 5 ngày thứ tư. Trong đó thứ tư thứ 3 là ngày 16. | | ||
| 5<br>5<br>11<br>2016 | -1 | Tháng 11 năm 2016 chỉ có 4 ngày thứ năm. Như vậy lễ kỷ niệm vào ngày thứ năm thứ 5 sẽ không diễn ra. | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
# PHIẾU GIẢM GIÁ | ||
|
||
- Để thu hút khách hàng Siêu thị điện máy cho đặt một máy tính ngay cạnh lối vào. Trên màn hình của máy tính hiển thị số nguyên n có 2, 3 hoặc 4 chữ số (không có số 0 ở đầu) và cho biết số này nhận được từ số nguyên x có 4 chữ số có nghĩa bằng cách cộng 2 chữ số đầu của x và 2 chữ số cuối của x sau đó viết liên tiếp 2 số nhận được thành số hiển thị trên màn hình, trong đó số lớn hơn được viết trước. Ví dụ x = 3165 thì 2 số nhận được sẽ là 3 + 1 = 4, 5 + 6 = 11 và kết quả hiển thị trên màn hình sẽ là 114. | ||
|
||
- Khách hàng phải có nhiệm vụ nạp vào máy tính số nguyên nhỏ nhất có 4 chữ số (không có các số 0 không có nghĩa) từ đó tạo ra kết quả đã nêu trên màn hình. Nếu không tồn tại số phù hợp thì nạp vào số 0. Nếu khách hàng trả lời đúng trong phạm vi chờ đợi của máy thì sẽ nhận được một phiếu giảm giá khi mua hàng trong Siêu thị. | ||
|
||
## YÊU CẦU | ||
|
||
Hãy xác định số cần đưa vào để nhận được phiếu giảm giá. | ||
|
||
Dữ liệu: Vào từ thiết bị nhập chuẩn số nguyên n có ít nhất 2 chữ số và nhiều nhất – 4 chữ số, không có các chữ số 0 không có nghĩa. | ||
|
||
Kết quả: Đưa ra thiết bị xuất chuẩn số cần đưa vào để nhận được phiếu giảm giá. | ||
|
||
## VÍ DỤ | ||
|
||
| INPUT | OUTPUT | | ||
| :----: | :----: | | ||
| `1311` | `2949` | |
Oops, something went wrong.