当前位置: 代码迷 >> 综合 >> 2020 GDUT Winter Personal Training ContestⅠ(div.2) --- E
  详细解决方案

2020 GDUT Winter Personal Training ContestⅠ(div.2) --- E

热度:62   发布时间:2024-01-25 17:11:45.0

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能给予改进的建议!

  相关解决方案