UVA 10361-Automatic Poetry(模拟)

Automatic Poetry

Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu

Submit Status

Description

Problem I

Automatic Poetry

Input: standard input

Output: standard output

Time Limit: 2 seconds

Memory Limit: 32 MB

“Oh God”, Lara Croft exclaims, “it’s one of these dumb riddles again!”

In Tomb Raider XIV, Lara is, as ever, gunning her way through ancient Egyptian pyramids, prehistoric caves and medival hallways. Now she is standing in front of some important Germanic looking doorway and has to solve a linguistic
riddle to pass. As usual, the riddle is not very intellectually challenging.

This time, the riddle involves poems containing a “Schuttelreim”. An example of a Schuttelreim is the following short poem:

Ein Kind halt seinen Schnabel nur,

wenn es hangt an der Nabelschnur.

/*German contestants please forgive me. I had to modify something as they were not appearing correctly in plain text format*/

A Schuttelreim seems to be a typical German invention. The funny thing about this strange type of poetry is that if somebody gives you the first line and the beginning of the second one, you can complete the poem yourself. Well,
even a computer can do that, and your task is to write a program which completes them automatically. This will help Lara concentrate on the “action” part of Tomb Raider and not on the “intellectual” part.

Input

The input will begin with a line containing a single number n. After this line follow n pairs of lines containing Schuttelreims. The first line of each pair will be of the form

s1<s2>s3<s4>s5

where the si are possibly empty, strings of lowercase characters or blanks. The second line will be a string of lowercase characters or blanks ending with three dots “...”. Lines will we at most 100 characters long.

Output

For each pair of Schuttelreim lines l1 and l2 you are to output two lines c1 and c2 in the following way: c1 is the same as l1 only that the bracket marks “<”
and “>” are removed. Line c2 is the same as l2 , except that instead of the three dots the string s4s3s2s5 should appear.

Sample Input

3

ein kind haelt seinen <schn>abel <n>ur

wenn es haengt an der ...

weil wir zu spaet zur <>oma <k>amen

verpassten wir das ...

<d>u <b>ist

...

Sample Output

ein kind haelt seinen schnabel nur

wenn es haengt an der nabel schnur

weil wir zu spaet zur oma kamen

verpassten wir das koma amen

du bist

bu dist

题意:输入n组数据,每组数据包括两个字符串

第一个字符串的输入格式是S1<S2>S3<S4>S5

第二个字符串的输入格式是C.........

然后输出

第一个字符串的输出是S1S2S3S4S5

第二个字符串的输出是CS4S3S2S5

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <algorithm>
using namespace std;
char str[5][110];
int main()
{
    int T,i,j,cnt;
    int len1,len2;
    char a[110],b[110];
    char c[110];
    while(~scanf("%d",&T))
    {
        getchar();
        while(T--)
        {
            gets(a);
            gets(b);
            len1=strlen(a);
            memset(str,0,sizeof(str));
            memset(c,0,sizeof(c));
            cnt=0;
            for(i=0;a[i]!='<';i++)
            {
                str[0][cnt]=a[i];
                cnt++;
            }
            str[0][cnt]='\0';
            cnt=0;
            for(i=i+1;a[i]!='>';i++)
            {
                str[1][cnt]=a[i];
                cnt++;
            }
            str[1][cnt]='\0';
            cnt=0;
            for(i=i+1;a[i]!='<';i++)
            {
                str[2][cnt]=a[i];
                cnt++;
            }
            str[2][cnt]='\0';
            cnt=0;
            for(i=i+1;a[i]!='>';i++)
            {
                str[3][cnt]=a[i];
                cnt++;
            }
            str[3][cnt]='\0';
            cnt=0;
            for(i=i+1;i<len1;i++)
            {
                str[4][cnt]=a[i];
                cnt++;
            }
            str[4][cnt]='\0';
            cnt=0;
            for(j=0;b[j]!='.';j++)
            {
                c[cnt]=b[j];
                cnt++;
            }
            c[cnt]='\0';
            for(i=0;i<5;i++)
            printf("%s",str[i]);
            printf("\n");
            printf("%s%s%s%s%s\n",c,str[3],str[2],str[1],str[4]);
        }
    }
    return 0;
}
时间: 2024-11-05 13:26:18

UVA 10361-Automatic Poetry(模拟)的相关文章

UVa 10361 Automatic Poetry

Automatic Poetry Input: standard input Output: standard output Time Limit: 2 seconds Memory Limit: 32 MB “Oh God”, Lara Croft exclaims, “it’s one of these dumb riddles again!” In Tomb Raider XIV, Lara is, as ever, gunning her way through ancient Egyp

UVA之10361 - Automatic Poetry

Problem I Automatic Poetry Input: standard input Output: standard output Time Limit: 2 seconds Memory Limit: 32 MB "Oh God", Lara Croft exclaims, "it's one of these dumb riddles again!" In Tomb Raider XIV, Lara is, as ever, gunning her

10361 - Automatic Poetry

#include<iostream> #include<cctype> #include<cstring> #include<algorithm> using namespace std; char str1[105],str2[105]; string s2,s4; int main(){ int n; cin >> n; getchar(); while(n--){ gets(str1); gets(str2); s2 = "&qu

UVa 10115 - Automatic Editing

题目:给你一些字符串的替换关系,以及一个句子.按顺序替换,输出最后结果. 分析:字符串.按照替换顺序依次替换(这个替换用过之后,就不再使用),每个替换可能出现多次. 这里注意,如果当前串中有多个可被当前单词替换的位置,只替换最前面的那个, 下次用本次生成的串替换,而不是整体一次性替换. 说明:注意数据清空. #include <iostream> #include <cstdlib> #include <cstring> #include <cstdio>

Uva - 1513 Moive collection ( 模拟栈 + 树状数组基本操作 )

Uva - 1513 Moive collection ( 模拟栈 + 树状数组基本操作 ) 题意: 一个书架,原来所有的书都是按顺序摆好的,书的编号从1开始到n 操作: 取出一本书,统计在这本书之前有多少本书,统计完之后,将这本书放在书架的第一位. 如:  1 2 3 4 5取4   4 1 2 3 5 (取之前,有3本书在4前面,取完后,将4放在栈顶)取4   4 1 2 3 5 (取之前,有0本书在4前面,取完后,将4放在栈顶)取2   2 4 1 3 5 (取之前,有2本书在2前面,取完

uva 1156 - Pixel Shuffle(模拟+置换)

题目链接:uva 1156 - Pixel Shuffle 题目大意:给定一个N*N的黑白位图,有7种操作,并且对应在指令后加上'-'即为操作的逆,给定N和一系列操作,(从最后一个开始执行),问说这一套指令需要执行多少次才能形成循环. 解题思路:模拟指令执行后获得一个置换,分解成若干的循环,各个循环长度的最小公倍数即使答案. #include <cstdio> #include <cstring> #include <algorithm> using namespace

小白书训练-Automatic Poetry

题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1302 题意:就是用<和>吧一句话截断为5部分,然后先打印s1s2s3s4s5,然后再输入一句话,然后在打印这句话(去除'.'),然后打印s4s3s2s5.其实就是个模拟,没有难度,就是英语有点问题,用指针分分钟的事情. 代码: #include <iostream

UVa 213 信息编码!模拟!

背景:一次ac!!而且调试时间也短!!!!看来这个自定义函数,确实是一个好的方法!!构思又清晰,调试又明朗! 思路:一些单一的函数堆砌而成,每个函数有自己的功能. 学习:1.我是采用模拟手算二进制为十进制的方法,而小紫书上给出的方法似乎更简单:(这似乎透露除了字符串数转化普通数的方法)(普通二进制数,转化为十进制数就一位一位的拆分) //assumpt that temp[] have n charnumbers int decimal=0; for(int i = 0;i < n;i++){

uva 177:Paper Folding(模拟 Grade D)

题目链接 题意:一张纸,每次从右往左对折.折好以后打开,让每个折痕都自然的呈90度.输出形状. 思路:模拟折……每次折想象成把一张纸分成了正面在下的一张和反面在上的一张.维护左边和方向,然后输出.细节有点多. 代码: #include <cstdio> #include <cstdlib> #include <cstring> #include <algorithm> using namespace std; #define N (1<<13)+