E — Repeating Ciphe
原题链接:https://codeforces.com/group/5yyKg9gx7m/contest/265863/problem/E
题目大意:
有几个字符s1,s2,s3,…,si,(1<i<10)可以这样加密,对于第i个字符重复i次,形成新的字符串。比如coop可加密成 c oo ooo pppp(中间空格是让读者可观,实际并不存在)。通过给出已经加密的字符串,问原来字符串是什么。
题目分析:
这道题很简单的,读懂了题目意思直接一个循环就可以了。先取第一个字符,(加1)然后取第二个,(加2)取第四个,(加3)取第七个…直到结束。
代码实现:
#include <iostream>
#include <cstdio>using namespace std;int main()
{char str[60];//原加密字符串char s[60];//答案字符串int n;int i, j;scanf("%d",&n);scanf("%s",str);j=0;//每次取第1,第2,第4,第7...for(i=0; i<n; i+=j){s[j++] = str[i];}s[j] = '\0'; //注意末尾补上结束符(不是字符串输出可不加)printf("%s\n",s);//字符串输出return 0;
}
最后希望路过的dl能给予改进的建议!