Kasia niedawno poznała wszystkie literki w szkole. Z wielką pasją potrafiła całe dnie spędzać na pisaniu długich słów swoim ulubionym flamastrem. Pisała i pisała "tasiemce" tak długo, aż flamaster wypisał się. Kasia posmutniała. Z trudem, ale udało jej się uprosić swoją mamę, aby kupiła jej nowy pisak. Musiała jednak obiecać, że tym razem będzie bardziej oszczędna przy jego używaniu żeby wystarczył na dłużej. Kasia zaczęła zastanawiać się w jaki sposób będzie mogła zrealizować obietnicę daną mamie.
Postanowiła, że aby zaoszczędzić wkład flamastra będzie wypisywała skróconą wersję wymyślanych wyrazów. Jeśli miała zamiar napisać więcej niż dwie takie same literki obok siebie w wyrazie, to teraz napisze literkę a następnie liczbę, określającą ilość wystąpień tej literki.
Zadanie
Twoim zadaniem jest dla zadanego wyrazu, który wymyśliła Kasia, podanie skróconej wersji tego wyrazu.
Wejście
W pierwszej linijce wejścia znajduje się liczba naturalna C, 1 ≤ C ≤ 50, oznaczająca ilość zestawów danych. W kolejnych C wierszach wejścia znajdują się zestawy danych. Każdy zestaw składa się z niepustego wyrazu złożonego z samych dużych liter alfabetu amerykańskiego. Długość wyrazu nie przekracza 200 znaków.
Wyjście
Dla każdego zestawu danych, dla zadanego wyrazu, na wyjściu powinna znaleźć się jego skrócona wersja.
Przykład
Dla danych wejściowych:
4
OPSS
ABCDEF
ABBCCCDDDDEEEEEFGGHIIJKKKL
AAAAAAAAAABBBBBBBBBBBBBBBB
prawidłowym rozwiązaniem jest:
OPSS
ABCDEF
ABBC3D4E5FGGHIIJK3L
A10B16
Kod źródłowy w C++:
#include <iostream> using namespace std; int main() { int c, q, i; char p; char input[200]; cin>>c; ++c; while(--c) { cin>>input; for(i=0;input[i]!='\0';++i) { if(input[i]==input[i+1] && input[i+1]==input[i+2]) { p=input[i]; q=2; while(input[i+q]==p) { ++q; } cout<<input[i]<<q; i+=q; --i; } else { cout<<input[i]; } } cout<<endl; } return 0; }
Kod źródłowy Python 2:
c = int(raw_input('')) for i in range(0, c, +1): strr = raw_input('') output = "" char = [] quantity = 0 char = list(strr) if len(char) == 1: print str(char[0]) continue for j in range(1, len(char), +1): if char[j - 1] == char[j]: quantity += 1 continue elif char[j - 1] != char[j] and quantity < 1: output += str(char[j - 1]) quantity = 0 continue elif char[j - 1] != char[j] and quantity == 1: output+= str(char[j-1]) + str(char[j-1]) quantity = 0 continue elif char[j - 1] != char[j] and quantity > 1: output += str(char[j - 1]) + str(quantity + 1) quantity = 0 continue if j+1 == int(len(char)) and quantity == 0: output += str(char[j]) print output continue if j+1 == int(len(char)) and quantity == 1: output += str(char[j]) + str(char[j]) print output continue if j+1 == int(len(char)) and quantity > 1: output += str(char[j]) + str(quantity + 1) print output continue exit(0)
Kod źródłowy w Python 3:
c = int(input('')) for i in range(0, c, +1): strr = input('') output = "" char = [] quantity = 0 char = list(strr) if len(char) == 1: print (str(char[0])) continue for j in range(1, len(char), +1): if char[j - 1] == char[j]: quantity += 1 continue elif char[j - 1] != char[j] and quantity < 1: output += str(char[j - 1]) quantity = 0 continue elif char[j - 1] != char[j] and quantity == 1: output+= str(char[j-1]) + str(char[j-1]) quantity = 0 continue elif char[j - 1] != char[j] and quantity > 1: output += str(char[j - 1]) + str(quantity + 1) quantity = 0 continue if j+1 == int(len(char)) and quantity == 0: output += str(char[j]) print (output) continue if j+1 == int(len(char)) and quantity == 1: output += str(char[j]) + str(char[j]) print (output) continue if j+1 == int(len(char)) and quantity > 1: output += str(char[j]) + str(quantity + 1) print (output) continue exit(0)
Źródło: http://pl.spoj.com/problems/FLAMASTE/
Brak komentarzy:
Prześlij komentarz