C. Postcard

Posted tp25959

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C. Postcard相关的知识,希望对你有一定的参考价值。

就是直接肛就对了

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int main()
 4 {
 5     int n,len,sum=0,sum1=0,sum2=0;///分别记录字母的数量,?的数量,*的数量
 6     char a[201];
 7     gets(a);
 8     cin>>n;
 9     len=strlen(a);
10     for(int i=0; i<len; i++)
11         if(a[i]>=a&&a[i]<=z)
12             sum++;
13         else if(a[i]==?)
14             sum1++;
15         else if(a[i]==*)
16             sum2++;
17     if(sum==n)///如果字母的数量等于n直接输出字符串(跳过*,?)
18     {
19         for(int i=0; i<len; i++)
20             if(a[i]>=a&&a[i]<=z)
21                 cout<<a[i];
22     }
23     else if(sum>n)///如果预期的少于已经有的,则需要减少字符
24     {
25         int ch=sum-n;///判断要减少的个数
26         if(ch>(sum1+sum2))///如果?和*的数量加起来都少于要减少的则就不可能存在,输出impossible
27             cout<<"Impossible";
28         else///反之,消掉ch个字符
29         {
30             for(int i=0; i<len; i++)
31             {
32                 if((a[i+1]==?||a[i+1]==*)&&ch)///消去前ch个非字母字符前的字母
33                 {
34                     i++;///还要跳过?*
35                     --ch;
36                 }
37                 else if((a[i]==?||a[i]==*)&&ch==0)
38                     continue;
39                 else cout<<a[i];
40             }
41         }
42     }
43     else if(sum<n)///如果n>已经有的字母,就需要增加字母
44     {
45         if(sum2==0)///*是唯一能增加字母的,如果雪花为0个就不能让字母增加所以输出impossible
46             cout<<"Impossible";
47         else///对于第一个*,输出需要增加的个数的第一个*前的字母
48         {
49             int flag=0;
50             for(int i=0; i<len; i++)
51             {
52                 if(a[i]==?||a[i]==*)
53                     continue;
54                 else if(a[i+1]==*&&flag==0)
55                 {
56                     cout<<a[i];
57                     for(int j=1; j<=n-sum; j++)
58                         cout<<a[i];
59                     i++;
60                     flag=1;
61                 }
62                 else cout<<a[i];
63             }
64         }
65     }
66 
67     return 0;
68 }

 

以上是关于C. Postcard的主要内容,如果未能解决你的问题,请参考以下文章

传递双精度值返回未知值C.

shell if 语句

在片段中我想点击如何显示警告对话框

JS最佳实践

Codeforces Round #267 (Div. 2) C. George and Job

jenkins的Pipeline代码流水线管理