K - MaratonIME goes to the karaoke
♬ Hit me, lock me up, do anything with me, ... ♬
and Marrone, Bruno
After thousands of years repeating the title of this problem statement, always with an excited and inviting tone, Nathan finally persuaded his colleagues to go to the karaoke. He is feeling radiant with this achievement.
But there is a problem. After so much time trying to make his friends go to the karaoke, Nathan is afraid of embarrassing himself when he goes to sing the following classics of Brazilian music:
Waitress – Reginaldo Rossi
Blue Nightclub – Joaquim and Manuel
Paper Heart – Sérgio Kings
Love Bubble – Fagner
You did not teach me to forget – Fernando Mendes
To avoid the humiliation, and to not discourage his fellows in future hang outs at the karaoke, Nathan decided to print all the song’s ciphers that are available in the karaoke, to check while he sings. However, this resulted in a colossal amount of paper, that he is not able to carry.
But the perseverance and ingenuity of an envious programmer is not something you should underestimate.
Nathan realized that, after all, there were only 7 musical notes. The specialists in this matter used to represent this notes with the letters A, B, C, D, E, F and G. Even more, it’s common that the same note appears several times in sequence. He decided then, to compress the songs, changing every occurrence of repeated notes with the note followed by how many times it occurs.
For instance, given the sequence
[(A,A,A,B,B,B,C,G,G,G,G,G,G,G,G,G,G,G)] the compressed version is [A3B3C1G11]
Unfortunately, Nathan also needs to pack his floral suit and to comb his beard – two homeric jobs – and he is out of time to compress the notes. Help him to not embarrass himself by writing a program that can solve this task.
Input
Each input consist of a single line, a sequence of caracteres S such as |S| ≤ 105, formed only by the letters A, B, C, D, E, F and G.
Output
For each input, print in a single line, such as each sequence of similar notes are replaced by the note that occurs and how many times it occurs, as showed in the example.
Example
Input
ABBGA
Output
A1B2G1A1
Input
AAABBBCGGGGGGGGGGG
Output
A3B3C1G11
#include<stdio.h>
#include<iostream>
#include<string.h>
using namespace std;
#define maxn 100005
char a[maxn];
int main()
{
int n;
int sum;
memset(a,0,sizeof(a));
while(gets(a))
{
n = strlen(a);
for(int i=0;i<n;i++)
{
sum = 1;
if((a[i]=='C'||a[i]=='B'||a[i]=='A'||a[i]=='G')&&a[i]!=a[i+1])
{
printf("%c%d",a[i],sum);
continue;
}
for(int j=i+1;j<=n;j++)
{
if(a[i] == a[j])
{
sum++;
}
else
{
printf("%c%d",a[j-1],sum);
i=j-1;
break;
}
}
}
printf("\n");
}
♬ Hit me, lock me up, do anything with me, ... ♬
and Marrone, Bruno
After thousands of years repeating the title of this problem statement, always with an excited and inviting tone, Nathan finally persuaded his colleagues to go to the karaoke. He is feeling radiant with this achievement.
But there is a problem. After so much time trying to make his friends go to the karaoke, Nathan is afraid of embarrassing himself when he goes to sing the following classics of Brazilian music:
Waitress – Reginaldo Rossi
Blue Nightclub – Joaquim and Manuel
Paper Heart – Sérgio Kings
Love Bubble – Fagner
You did not teach me to forget – Fernando Mendes
To avoid the humiliation, and to not discourage his fellows in future hang outs at the karaoke, Nathan decided to print all the song’s ciphers that are available in the karaoke, to check while he sings. However, this resulted in a colossal amount of paper, that he is not able to carry.
But the perseverance and ingenuity of an envious programmer is not something you should underestimate.
Nathan realized that, after all, there were only 7 musical notes. The specialists in this matter used to represent this notes with the letters A, B, C, D, E, F and G. Even more, it’s common that the same note appears several times in sequence. He decided then, to compress the songs, changing every occurrence of repeated notes with the note followed by how many times it occurs.
For instance, given the sequence
[(A,A,A,B,B,B,C,G,G,G,G,G,G,G,G,G,G,G)] the compressed version is [A3B3C1G11]
Unfortunately, Nathan also needs to pack his floral suit and to comb his beard – two homeric jobs – and he is out of time to compress the notes. Help him to not embarrass himself by writing a program that can solve this task.
Input
Each input consist of a single line, a sequence of caracteres S such as |S| ≤ 105, formed only by the letters A, B, C, D, E, F and G.
Output
For each input, print in a single line, such as each sequence of similar notes are replaced by the note that occurs and how many times it occurs, as showed in the example.
Example
Input
ABBGA
Output
A1B2G1A1
Input
AAABBBCGGGGGGGGGGG
Output
A3B3C1G11
#include<stdio.h>
#include<iostream>
#include<string.h>
using namespace std;
#define maxn 100005
char a[maxn];
int main()
{
int n;
int sum;
memset(a,0,sizeof(a));
while(gets(a))
{
n = strlen(a);
for(int i=0;i<n;i++)
{
sum = 1;
if((a[i]=='C'||a[i]=='B'||a[i]=='A'||a[i]=='G')&&a[i]!=a[i+1])
{
printf("%c%d",a[i],sum);
continue;
}
for(int j=i+1;j<=n;j++)
{
if(a[i] == a[j])
{
sum++;
}
else
{
printf("%c%d",a[j-1],sum);
i=j-1;
break;
}
}
}
printf("\n");
}
}
测试样例: