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 thuật từ tiếng Berland sang tiếng Birland thực ra lại vô cùng thú vị. Hai ngôn ngữ này có một sợi dây liên kết rất đặc biệt: một từ trong tiếng Birland chính là cách viết đảo ngược hoàn toàn của từ đó trong tiếng Berland!
Ví dụ: Từ code trong tiếng Berland khi dịch sang tiếng Birland sẽ được đánh vần ngược lại thành edoc.
Tuy quy tắc cực kỳ đơn giản, nhưng gõ phím nhanh thì vẫn rất dễ mắc lỗi. Vasya vừa dịch một từ S (tiếng Berland) thành từ T (tiếng Birland). Bạn hãy lập trình giúp Vasya kiểm tra xem cậu ấy đã dịch chính xác 100% hay chưa nhé.
Yêu cầu: Cho hai xâu ký tự S và T. Hãy kiểm tra xem T có phải là xâu đảo ngược hoàn toàn của S hay không.
Dữ liệu vào (Input):
• Dòng đầu tiên chứa từ S (từ gốc tiếng Berland).
• Dòng thứ hai chứa từ T (bản dịch tiếng Birland).
• Cả hai từ chỉ bao gồm các chữ cái in thường, không chứa dấu cách thừa. Độ dài mỗi từ tối thiểu là 1 và tối đa là 100 ký tự.
Dữ liệu ra (Output):
• In ra YES nếu từ T chính xác là từ S viết ngược lại.
• Nếu sai dù chỉ một ký tự hoặc sai độ dài, in ra NO.
Ví dụ 1:
Input:
code
edoc
Output:
YES
Ví dụ 2: Input:
#
abb
aba
Output:
NO
Trò chơi của Anton và Danik (xử lý xâu - hsg)
Nộp bàiPoint: 1
Anton và cậu bạn thân Danik đều là những người đam mê cờ vua mãnh liệt. Trong một buổi giao lưu, họ đã chơi liên tục n ván cờ (với trình độ một chín một mười, không có ván cờ nào kết thúc với tỉ số hòa).
Sau một chuỗi trận đấu trí căng thẳng, cả hai đều hoa mắt chóng mặt và không nhớ rõ ai đang dẫn trước. Bạn được cung cấp một cuốn sổ ghi chép lại kết quả của từng ván đấu. Hãy lập trình để thống kê và phân định xem ai mới là nhà vô địch thực sự nhé!
Yêu cầu: Đếm số lượng ván thắng của mỗi người và đưa ra kết quả chung cuộc.
Dữ liệu vào (Input):
Dòng đầu tiên chứa một số nguyên dương n (1 <= n <= 100000) — tổng số ván cờ đã chơi.
Dòng thứ hai chứa một xâu ký tự S bao gồm đúng n chữ cái in hoa (chỉ gồm các ký tự 'A' và 'D').
Ký tự 'A' có nghĩa là Anton thắng ván đó.
Ký tự 'D' có nghĩa là Danik thắng ván đó.
Dữ liệu ra (Output):
In ra Anton nếu Anton giành được nhiều ván thắng hơn Danik.
In ra Danik nếu Danik giành được nhiều ván thắng hơn Anton.
In ra Friendship (Tình bạn) nếu hai người có số ván thắng bằng nhau.
Ví dụ 1:
Input:
5
AAADD
Output:
Anton
(Giải thích: Trong 5 ván cờ, Anton thắng 3 ván, Danik chỉ thắng 2 ván. Chung cuộc Anton là người chiến thắng).
Ví dụ 2:
Input:
6
ADAAAA
Output:
Anton
Ví dụ 3:
Input:
6
DADADA
Output:
Friendship
(Giải thích: Mỗi người đều giành được đúng 3 ván thắng, kết quả chung cuộc là hòa).
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