zoukankan      html  css  js  c++  java
  • [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('
    ');
    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('
    ');
    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('
    ');
    58     
    59     return 0;
    60 }
  • 相关阅读:
    npm,umi,yarn
    PHPStorm 快捷键, 到页面顶部和底部
    百度统计
    公共管理之重置密码
    ALT+J 多行编辑
    PHP,Excel导出换行
    art-template 弹出上传多图
    java mock
    mysql查找字符串出现位置
    Spring 依赖注入,在Main方法中取得Spring控制的实例
  • 原文地址:https://www.cnblogs.com/J-william/p/7741137.html
Copyright © 2011-2022 走看看