本文主要是介绍列变位法解密(2016百度之星 - 测试赛(热身,陈题)),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
列变位法解密
Accepts: 132
Submissions: 351
Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 65536/65536 K (Java/Others)
前两次为了节省点内存SB了。。。浪费了时间 结果TLE
#include <stdio.h>
#include <string.h>
char pass[100000+10];
char str[200000+10];
bool vis[200000+10];
int main()
{int ncase,t=1;scanf("%d",&ncase);while(ncase--){int n,len,m;memset(vis,false,sizeof(vis));gets(pass);gets(pass);scanf("%d",&n); len=strlen(pass);if(len%n==0){m=len/n;}else{m=len/n+1;}int r=m*n-len;int len2=m*n;int temp=r;int j=len-1;for(int i=len2;i>0;i--){if(i%m==0&&temp){temp--;vis[i]=true;}elsestr[i]=pass[j--];}printf("Case #%d:\n",t++);for(int k=1;k<=m;k++){for(int i=k;i<=len2;i+=m){if(!vis[i])printf("%c",str[i]);}} printf("\n");}
}
这篇关于列变位法解密(2016百度之星 - 测试赛(热身,陈题))的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!