[JLOI2008]提示问题

题目描述

最近在JLOI网上的一个流行游戏中,选手要回答很难的问题。假如在规定时间内不能回答,系统将给出1个提示,之后再依次给出第2,3个提示。出现在答案中的是字母和下列字符:

'.',',',':',';','!','?','-'和空格(空格不会在开头和结尾出现)

字母是指:小写字母'a'...'z' 大写字母 'A'...'Z',其中aeiouAEIOU是元音字母。

生成提示的规则:

第1个提示:简单的将所有字母换成'.'即可;

第2个提示:从第1个提示而来,将所有字母的个数求出,再将总个数除以三,得到的最接近商的自然数N,将第1个提示中的前N个字母显示;

第3个提示:从第2个提示而来,将剩下的元音字母显示。假如没有可显示的元音字母,则从第1个提示而来,即我们将前2/3的字母显示(同样如不能被3整除则取最接近的整数)。

输入输出格式

输入格式:

仅一行,给出问题,问题字符数最多不超过50

输出格式:

三行:按规则输出的三行提示

输入输出样例

输入样例#1: 复制
Upomoc! Lpv s nm pkrl sv smglsnk.
输出样例#1: 复制
......! ... . .. .... .. ........ 
Upomoc! Lp. . .. .... .. ........ 
Upomoc! Lpv s nm pkrl s. ........

思路

模拟;

代码

 1 #include<cmath>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<iostream>
 5 using namespace std;
 6 int n,m,l,r,ok;
 7 char ch[60]; 
 8 
 9 int main(){
10     gets(ch);
11     l=strlen(ch);
12     for(int i=0;i<l;i++){
13         if(isalpha(ch[i])) putchar('.'),m++;
14         else putchar(ch[i]);
15     }
16     
17     putchar('\n');
18     
19     n=round(m/3.0);
20     for(int i=0,j=0;i<l;i++){
21         if(isalpha(ch[i])){
22             if(j<n) putchar(ch[i]),j++,r=i;
23             else{
24                 if(ch[i]=='a'||ch[i]=='A'||ch[i]=='e'||ch[i]=='E'||ch[i]=='i'||ch[i]=='I'||ch[i]=='o'||ch[i]=='O'||ch[i]=='u'||ch[i]=='U') ok++;
25                 putchar('.');
26             }
27         }
28         else putchar(ch[i]);
29     }
30     
31     putchar('\n');
32     
33     if(ok){
34         for(int i=0,j=0;i<l;i++){
35             if(isalpha(ch[i])){
36                 if(j<n) putchar(ch[i]);
37                 else{
38                     if(ch[i]=='a'||ch[i]=='A'||ch[i]=='e'||ch[i]=='E'||ch[i]=='i'||ch[i]=='I'||ch[i]=='o'||ch[i]=='O'||ch[i]=='u'||ch[i]=='U') putchar(ch[i]);
39                     else putchar('.');
40                 }
41                 j++;
42             }
43             else putchar(ch[i]);
44         }
45     }
46     else{
47         n=round(m*2.0/3.0);
48         for(int i=0,j=0;i<l;i++){
49                 if(isalpha(ch[i])){
50                     if(j<n) putchar(ch[i]),j++;
51                     else putchar('.');
52                 }
53             else putchar(ch[i]);
54         }
55     }
56     
57     putchar('\n');
58     
59     return 0;
60 }

 

posted @ 2017-10-27 08:06  J_william  阅读(383)  评论(0编辑  收藏  举报