Bài tập ứng dụng stringstream - Hưng
Email và Mật khẩu (xâu ký tự - chuỗi ký tự)
Nộp bàiPoint: 1
Hiện tại trường đại học NONAME tổ chức cấp email cho sinh viên mới nhập học. Email và mật khẩu sẽ được cấp dựa trên tên của sinh viên và ngày sinh của sinh viên đó. Bạn hãy viết chương trình để cấp tài khoản theo yêu cầu như sau, tên email được tạo bằng cách lấy tên của sinh viên và ghép với các chữ cái đầu tiên của họ và tên đệm, tất các ký tự trong email đều ở dạng in thường, ví dụ sinh viên có tên "Nguyen Van Long" sẽ được cấp email "longnv@xyz.edu.vn". Mật khẩu sẽ dựa trên ngày sinh của sinh viên đó, bằng cách ghép ngày tháng năm lại với nhau, ví dụ sinh viên sinh ngày 27/04/2002 sẽ có mật khẩu là 2742002.
Input 01:
1
le van TEO 11/05/2004
Output 01:
teolv@xyz.edu.vn
1152004
Input 02:
2
le van TEO 11/05/2004
tran thi TY 23/2/2006
Output 02:
teolv@xyz.edu.vn
1152004
tytt@xyz.edu.vn
2322006
Chuẩn hóa tên 1 (xâu ký tự - chuỗi ký tự)
Nộp bàiPoint: 1
Cho một xâu là tên người chỉ bao gồm các kí tự là chữ cái và dấu cách, giữa các từ trong xâu có thế tồn tại nhiều dấu cách, hãy chuẩn hóa tên người bằng cách viết hoa chữ cái đầu tiên của từng từ và viết thường các chữ cái còn lại. Xâu tiếp theo là ngày sinh của người này, bao gồm ngày tháng năm phân cách nhau bằng dấu "/", hãy chuẩn hóa ngày sinh của người này về đúng dạng dd/mm/yyyy.
Ràng buộc: Xâu kí tự tên người có không quá 2000 kí tự; Xâu ngày sinh có không quá 10 kí tự. Dữ liệu đảm bảo có dấu '/' giữa ngày, tháng, năm.
Dòng đầu tiên in ra tên người sau khi chuẩn hóa. Dòng thứ 2 in ra ngày sinh sau khi đưa về dạng chuẩn dd/mm/yyyy
Input:
le Thi huyen Thanh
5/6/2007
Output:
Le Thi Huyen Thanh
05/06/2007
Chuẩn hóa tên 2 (xâu ký tự - chuỗi ký tự)
Nộp bàiPoint: 1
Cho một xâu là tên người chỉ bao gồm các kí tự là chữ cái và dấu cách, giữa các từ trong câu có thế tồn tại nhiều dầu cách hãy chuẩn hóa tên người theo 2 mẫu được yêu cầu trước. Xem output để rõ hơn về cách chuẩn hóa.
Ràng buộc: Xâu kí tự tên người có không quá 1000 kÍ tự
Dòng đầu tiên in ra theo mẫu chuẩn hóa 1. Dòng thứ 2 in ra theo mẫu chuẩn hóa 2.
Input:
le Thi huyen Thanh
Output:
Le Thi Huyen, THANH
THANH, Le Thi Huyen
Email và Mật khẩu 2 (xâu ký tự - chuỗi ký tự)
Nộp bàiPoint: 1
Trường đại học ABC tổ chức cấp email cho sinh viên mới nhập học. Email và mật khấu sẽ được cấp dựa trên tên của sinh viên và ngày sinh của sinh viên đó. Bạn hãy viết chương trình để cấp tài khoản theo yêu cầu như sau, tên email được tạo bằng cách lấy tên của sinh viên và ghép với các chữ cái đầu tiên của họ và tên đệm tất các ký tự trong email đều ở dạng in thường, ví dụ sinh viên có tên "Nguyen Van Long" sẽ được cấp email "longnv@xyz.edu.vn".
Mật khẩu sẽ dựa trên ngày sinh của sinh viên đó, bằng cách ghép ngày tháng năm lại với nhau, ví dụ sinh viên sinh ngày 27/04/2002 sẽ có mật khẩu là 2742002. Ngoài ra sẽ có những trường hợp sinh viên bị trùng tên email, ví dụ, sinh viên "Nguyen Van Long" sẽ được cấp email "longnv@xyz.edu.vn", sinh viên tên "Ngo Van Long" cũng sẽ được cấp email "longnv@xyz.edu.vn", vì thế nhà trường quy định, theo thứ tự tên trong danh sách, nếu email được cấp của sinh viên hiện tại đã được cấp cho một sinh viên trước đó thì thêm số thứ tự vào tên email.
Ràng buộc:
~1 \leq N ≤ 5000~
Dòng thông tin của sinh viên không quá 1000 kí tự, dữ liệu đảm bảo thông tin cuối cùng trong dòng là ngày sinh của sinh viên.
In ra ra email và mật khẩu được cấp của mỗi sinh viên trên 2 dòng. Chú ý các sinh viên email bị trùng tên sẽ được thêm số thứ tự vào sau.
Input:
4
Nguyen quang Truong 24/12/2005
Le van Tho 06/07/2005
ngo quan Truong 12/3/2005
le van Sen 02/4/2005
Output:
truongnq@xyz.edu.vn
24122005
tholv@xyz.edu.vn
672005
truongnq2@xyz.edu.vn
1232005
senlv@xyz.edu.vn
242005
Tách các từ trong xâu (xâu ký tự cơ bản)
Nộp bàiPoint: 1
Cho một xâu gồm nhiều từ, hãy tách các từ trong xâu ra và in mỗi từ trên 1 dòng
Ràng buộc: Xâu có thể lên đến 1000 từ
Input:
hoc cong nghe day lap trinh
Output:
hoc
cong
nghe
day
lap
trinh
Tạo email từ tên
Nộp bàiPoint: 1
Địa chỉ email được cấp theo nguyên tắc ghép tên với chữ cái đầu tiên của họ và tên đệm. Viết chương trình cho phép tạo các địa chỉ email theo tên.
INPUT:
ngUYEN van binh
OUTPUT:
binhnv@gmail.com
Tạo email từ tên 2
Nộp bàiPoint: 1
Địa chỉ email được cấp theo nguyên tắc ghép tên với chữ cái đầu tiên của họ và tên đệm. Viết chương trình cho phép tạo các địa chỉ email theo tên người.
INPUT:
ngUYEN van BInh
OUTPUT:
nvbinh@gmail.com
Chuẩn hóa tên 4
Nộp bàiPoint: 1
Tên người dùng sẽ được chuẩn hóa theo nguyên tắc họ được viết sau cùng, phân tách với phần tên đệm và tên bởi dấu phẩy. Các chữ cái nằm trong họ đều được viết hoa; chữ cái đầu tiên của tên đệm và tên được viết hoa, các chữ cái còn lại viết thường.
INPUT:
ngUYEN van nam
OUTPUT:
Van Nam, NGUYEN
Chuẩn hóa tên 3
Nộp bàiPoint: 1
Tên người dùng sẽ được chuẩn hóa theo nguyên tắc tên được viết sau cùng, phân tách với phần tên đệm và tên bởi dấu phẩy. Các chữ cái nằm trong tên đều được viết hoa; chữ cái đầu tiên của tên đệm và họ được viết hoa, các chữ cái còn lại viết thường.
INPUT:
ngUYEN van binh
OUTPUT:
Nguyen Van, BINH
Chuẩn hóa tên 5
Nộp bàiPoint: 1
Tên người dùng sẽ được chuẩn hóa theo nguyên tắc tên được viết đầu tiên, phân tách với phần họ và tên đệm dấu phẩy. Các chữ cái nằm trong tên đều được viết hoa; chữ cái đầu tiên của tên đệm và họđược viết hoa, các chữ cái còn lại viết thường.
INPUT:
ngUYEN van binh
OUTPUT:
BINH, Nguyen Van
Từ Berland sang Birland (xử lý xâu - hsg)
Nộp bàiPoint: 1
Việc dịch từ ngôn ngữ Berland sang ngôn ngữ Birland không phải là một nhiệm vụ dễ dàng. Những ngôn ngữ này rất giống nhau: một từ berlandish khác với một từ birlandish có cùng một nghĩa nhỏ: nó được đánh vần (và phát âm) ngược lại. Ví dụ, mã từ Berlandish tương ứng với một từ ngữ Birlandish. Tuy nhiên, thật dễ dàng mắc lỗi trong "bản dịch". Vasya dịch từ s từ Berlandish sang Birlandish là t. Giúp anh ta: tìm ra nếu anh ta dịch từ chính xác.
Đầu vào: Dòng đầu tiên chứa từ s, dòng thứ hai chứa từ t. Các từ bao gồm các chữ cái Latinh viết thường. Dữ liệu đầu vào không bao gồm các khoảng trống không cần thiết. Các từ không trống và độ dài của chúng không vượt quá 100.
Đầu ra: Nếu từ t là một từ s, được viết ngược lại, in YES, nếu không thì in NO.
Input:
code
edoc
Output:
YES
Trò chơi của Anton và Danik (xử lý xâu - hsg)
Nộp bàiPoint: 1
Anton thích chơi cờ, và Danik, bạn của anh ta cũng vậy. Một khi họ đã chơi n game liên tiếp. Đối với mỗi trò chơi, người ta biết ai là người chiến thắng - Anton hoặc Danik. Không có trò chơi nào kết thúc hòa. Bây giờ Anton tự hỏi, ai thắng nhiều game hơn, anh hay Danik? Giúp anh ta xác định điều này.
Đầu vào:
- Dòng đầu tiên của đầu vào chứa một số nguyên n (1 ≤ n 100 000) - số lượng trò chơi đã chơi.
- Dòng thứ hai chứa một chuỗi s, bao gồm n chữ cái in hoa 'A' và 'D' - kết quả của mỗi trò chơi. Ký tự thứ i của chuỗi bằng 'A' nếu Anton thắng trò chơi thứ i và 'D' nếu Danik thắng trò chơi thứ i.
Đầu ra:
- Nếu Anton thắng nhiều trò chơi hơn Danik, hãy in "Anton" (không có dấu ngoặc kép) trong dòng duy nhất của đầu ra.
- Nếu Danik thắng nhiều trò chơi hơn Anton, hãy in "Danik" (không có dấu ngoặc kép) trong dòng duy nhất của đầu ra.
- Nếu Anton và Danik thắng cùng số trò chơi, hãy in "Friendship" (không có dấu ngoặc kép).
Input:
5
AAADD
Output:
Anton
Tiến sĩ Bruce Banner (xử lý xâu - hsg)
Nộp bàiPoint: 1
Tiến sĩ Bruce Banner ghét kẻ thù của mình. Như chúng ta đã biết, anh ta hầu như không thể nói chuyện khi biến thành Hulk. Đó là lý do tại sao anh ấy yêu cầu bạn giúp anh ấy bày tỏ cảm xúc của mình. Cảm xúc của anh rất phức tạp. Cảm xúc có n lớp. Lớp thứ nhất là ghét, lớp thứ hai là yêu, lớp thứ ba là ghét và cứ thế ... Ví dụ: nếu n = 1, thì cảm giác của anh ấy là " I hate it " hoặc nếu n = 2 thì đó là " I hate that I love it " và nếu n = 3 thì " I hate that I love that I love it ". Xin hãy giúp Tiến sĩ Banner.
Đầu vào: Dòng duy nhất của đầu vào chứa một số nguyên n (1<=n<=100) - số lớp yêu và ghét.
Đầu ra: In cảm giác của Dr.Banner trong một dòng.
Input:
3
Output:
I hate that I love that I hate it
Shapur toàn năng (xử lý xâu - hsg)
Nộp bàiPoint: 1
Shapur là một học sinh cực kỳ tài năng. Anh ấy rất giỏi trong mọi thứ, bao gồm cả Tổ hợp, Đại số, Lý thuyết số, Hình học, Giải tích, v.v. Anh ấy không chỉ thông minh mà còn cực kỳ nhanh! Anh ta có thể tính 10^18 số trong một giây. Một ngày nọ vào năm 230 sau Công nguyên, Shapur đang cố gắng tìm hiểu xem có ai có thể thực hiện các phép tính nhanh hơn anh ta không. Kết quả là anh ấy đã làm một cuộc thi rất tuyệt vời và yêu cầu mọi người đến và tham gia. Trong cuộc thi của mình, anh đã cho các thí sinh nhiều cặp số khác nhau. Mỗi số được tạo từ các chữ số 0 hoặc 1. Các thí sinh nên viết một số mới tương ứng với cặp số đã cho. Quy tắc rất đơn giản: Chữ số thứ i của câu trả lời là 1 khi và chỉ khi chữ số thứ i của hai số đã cho khác nhau. Trong trường hợp khác, chữ số thứ i của câu trả lời là 0.
Đầu vào: Có hai dòng trong mỗi đầu vào. Mỗi người trong số họ chứa một số duy nhất. Đảm bảo rằng các số được tạo từ 0 và 1 và độ dài của chúng là như nhau. Các số có thể bắt đầu bằng 0. Độ dài của mỗi số không vượt quá 100.
Đầu ra: Viết một dòng - câu trả lời tương ứng. Đừng bỏ qua các số 0 ở hàng đầu.
Input:
1100
0011
Output:
1111
Kỳ nghỉ của Ông già Noel (xử lý xâu - hsg)
Nộp bàiPoint: 1
Kỳ nghỉ năm mới đã qua. Ông già Noel và các đồng nghiệp có thể nghỉ ngơi và đón khách. Khi hai người "New year và Christmas men" gặp nhau, các trợ lý đã cắt bỏ từ thiệp mời tên của khách và tên của chủ nhà để vinh danh sự kiện này. Sau đó, treo các chữ cái trên lối vào chính. Một đêm nọ, khi mọi người đi ngủ, ai đó đã lấy tất cả các chữ cái tên của các nhân vật. Sau đó, anh ta có thể đã xáo trộn các chữ cái và đặt chúng thành một đống trước cửa. Sáng hôm sau không thể tìm ra thủ phạm đã gây rối. Nhưng mọi người tự hỏi liệu có thể khôi phục tên của chủ nhà và khách của mình từ những lá thư nằm ở cửa không? Tất nhiên, chúng tôi cần xác minh rằng không có thêm chữ cái nào và không ai cần phải bị cắt bớt chữ cái. Giúp "New year và Christmas men" và bạn bè của họ đối phó với vấn đề này. Bạn được cung cấp cả hai dòng chữ treo trên cửa trước vào đêm hôm trước và một đống thư được tìm thấy ở cửa trước vào sáng hôm sau.
Đầu vào: Đầu vào bao gồm ba dòng: dòng đầu tiên chứa tên của khách, dòng thứ hai chứa tên của chủ nhà và dòng thứ ba chứa các chữ cái trong một đống được tìm thấy ở cửa vào buổi sáng. Tất cả các dòng không có dấu cách và chỉ chứa các chữ cái Latinh viết hoa. Độ dài của mỗi dòng không vượt quá 100.
Đầu ra: In "YES" mà không có dấu ngoặc kép, nếu các chữ cái trong đống có thể được hoán vị để tạo ra tên của " New year và Christmas men ". Nếu không, in "NO" mà không có dấu ngoặc kép.
Input:
SANTACLAUS
DEDMOROZ
SANTAMOROZDEDCLAUS
Output:
YES
Xóa số 0 (xử lý xâu - hsg)
Nộp bàiPoint: 1
Bạn được cung cấp một chuỗi s. Mỗi ký tự là 0 hoặc 1. Bạn muốn tất cả các số 1 trong chuỗi tạo thành một phân đoạn liền kề. Ví dụ: nếu chuỗi là 0, 1, 00111 hoặc 01111100, thì tất cả 1 đều tạo thành một phân đoạn liền kề và nếu chuỗi là 0101, 100001 hoặc 11111111111101 thì điều kiện này không được đáp ứng. Bạn có thể xóa một số 0 (có thể không cần xóa) khỏi chuỗi. Số 0 tối thiểu mà bạn phải xóa là bao nhiêu?
Đầu vào: Dòng đầu tiên chứa một số nguyên t (1≤t≤100) - số lượng trường hợp kiểm tra. Sau đó t dòng tiếp theo, mỗi dòng đại diện cho một trường hợp thử nghiệm. Mỗi dòng chứa một chuỗi s (1≤ | s |<=100); mỗi ký tự của s là 0 hoặc 1.
Đầu ra: In số nguyên t, trong đó số nguyên thứ i là câu trả lời cho mẫu thử thứ i (số tối thiểu là 0 mà bạn phải xóa khỏi s).
Input:
3
010011
0
1111000
Output:
2
0
0