Codechef Probem : NITIKA
Problem : Link: ( https://www.codechef.com/JULY17/problems/NITIKA )
Nitika was once reading a history book and wanted to analyze it. So she asked her brother to create a list of names of the various famous personalities in the book. Her brother gave Nitika the list. Nitika was furious when she saw the list. The names of the people were not properly formatted. She doesn't like this and would like to properly format it.
A name can have at most three parts: first name, middle name and last name. It will have at least one part. The last name is always present. The rules of formatting a name are very simple:
Input :
The first line of the input contains an integer T denoting the number of test cases.
The only line of each test case contains the space separated parts of the name.
Output :
For each case, output the properly formatted name.
Constraint :
Subtask :
Subtask #1 (40 points)
Original constraints
Example :
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Solution (in C++) :
Nitika was once reading a history book and wanted to analyze it. So she asked her brother to create a list of names of the various famous personalities in the book. Her brother gave Nitika the list. Nitika was furious when she saw the list. The names of the people were not properly formatted. She doesn't like this and would like to properly format it.
A name can have at most three parts: first name, middle name and last name. It will have at least one part. The last name is always present. The rules of formatting a name are very simple:
- Only the first letter of each part of the name should be capital.
- All the parts of the name except the last part should be represented by only two characters. The first character should be the first letter of the part and should be capitalized. The second character should be ".".
- gandhi -> Gandhi
- mahatma gandhI -> M. Gandhi
- Mohndas KaramChand ganDhi -> M. K. Gandhi.
Input :
The first line of the input contains an integer T denoting the number of test cases.
The only line of each test case contains the space separated parts of the name.
Output :
For each case, output the properly formatted name.
Constraint :
- 1 ≤ T ≤ 100
- 2 ≤ Length of each part of the name ≤ 10
- Each part of the name contains the letters from lower and upper case English alphabets (i.e. from 'a' to 'z', or 'A' to 'Z')
Subtask :
Subtask #1 (40 points)
- There is exactly one part in the name.
Original constraints
Example :
Input:
3
gandhi
mahatma gandhI
Mohndas KaramChand gandhi
Output:
Gandhi
M. Gandhi
M. K. Gandhi
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Solution (in C++) :
#include <iostream> #include <string> #include <cctype> using namespace std; int main() { int t; cin >> t; cin.ignore(); while (t--) { string s; getline(cin, s); int x = 0; for (int i = 0; i < s.length(); i++) { if (s[i] == ' ') { s[x] = toupper(s[x]); x++; s[x] = '.'; x++; while (s[x] != ' ') { s.erase(x, 1); } i = x; x++; } } s[x] = toupper(s[x]); x++; for (int k = x; k < s.length(); k++) { s[k] = tolower(s[k]); } cout << s << endl; } return 0; }
Comments
Post a Comment