NC200377. 王宁宁宁
描述
暑假训练已经结束了,暑假训练时间充不充足,训练强度大不大,训练提升大不大;
训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大;
训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大;
训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大;
训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,训练强度大不大,训练提升大不大,我相信大家自己心里都是有数的,说到底我们提升的动力还是来自于自己的毅力。希望大家能够在新的学期能够再接再厉,成绩不理想不要紧,坚持下去总有一天会出头,得到你想要的东西的!与君共勉。
—— 王宁宁宁 发表于 08-25 19:32, 来自群 2018CUST ACM
同时,为了不引起歧义,你的缩写规则很简单:对于一段连续出现n次的字母X,你可以用nX替换,例如aaaa可以用4a替换。请你用最少的替换次数,使得缩写后的字符串长度最短。
输入描述
有多组输入。
每组输入一行,代表原始字符串(王宁宁宁的言论),仅由英文字母组成,长度不超过100000。
输出描述
对于每组输入,输出一行,代表符合题意的缩写后的字符串。
示例1
输入:
wnnn hahahaaaaaaaaaa
输出:
w3n hahah10a
C(clang 3.9) 解法, 执行用时: 87ms, 内存消耗: 1352K, 提交时间: 2019-12-14 13:02:19
#include<stdio.h> #include<math.h> int weishu[1000]; int main(){ char s[100100],t; int len,temp,i = 0; while(scanf("%s",s)!=EOF){ i = 0; while(s[i]!='\0'){ len = 1; t = s[i]; i++; while(s[i]==t){ i++; len++; } if( len == 1) printf("%c",t); else if(len == 2) printf("%c%c",t,t); else printf("%d%c",len,t); } printf("\n"); getchar(); } return 0; }
C(gcc 7.5.0) 解法, 执行用时: 55ms, 内存消耗: 1360K, 提交时间: 2023-03-28 19:59:21
#include<stdio.h> int main() { char a[100005]; while(~scanf("%s",&a)) { int s=1; for(int i=0;a[i]!='\0';i++) { if(a[i]==a[i+1]) s++; else { if(s==1) { printf("%c",a[i]); } else if(s==2) { printf("%c%c",a[i],a[i]); s=1; } else if(s>2) { printf("%d",s); printf("%c",a[i]); s=1; } } } printf("\n"); } }
C++14(g++5.4) 解法, 执行用时: 256ms, 内存消耗: 5860K, 提交时间: 2019-12-29 18:41:39
#include<bits/stdc++.h> using namespace std; int main() { string ch; while(cin>>ch) { int s=1; int len=ch.length(); for(int i=0;i<len;i++) { if(ch[i]!=ch[i+1]) { if(s==2) cout<<ch[i]; else if(s>2) cout<<s; cout<<ch[i]; s=1; } else s++; } cout<<endl; } return 0; }
C++11(clang++ 3.9) 解法, 执行用时: 234ms, 内存消耗: 1400K, 提交时间: 2019-12-14 15:39:56
#include<bits/stdc++.h> using namespace std; int main() { char a[100005]; int p; while(cin>>a) { for(int i=0;a[i]!='\0';i++) { p=1; while(a[i]==a[i+1]) { i++;p++; } if(p>2) cout<<p; else if(p==2) cout<<a[i]; cout<<a[i]; } cout<<endl; } return 0; }
Python(2.7.3) 解法, 执行用时: 1368ms, 内存消耗: 3912K, 提交时间: 2019-12-13 23:10:13
while True: try: print(reduce(lambda(s,p,n),c:(s,p,n+1)if c==p else(s+(str(n)if n>2else(n-1)*p)+p,c,1)if n>0else(s,c,1),raw_input()+'_',('','',0))[0]) except: break