| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2387 人关注过本帖
标题:柏林密码破译如何写更简洁
取消只看楼主 加入收藏
rainnese
Rank: 1
来 自:广州
等 级:新手上路
帖 子:51
专家分:0
注 册:2016-1-15
结帖率:56.25%
收藏
已结贴  问题点数:8 回复次数:3 
柏林密码破译如何写更简洁
题目大概如下:
密码加密方法是这样的:
1.获得一段文字后,求出它的长度(包括空格)len。
2.进入加密运算的第1步:把所有下标是1倍数的字符做顺时针旋转。
3.进入加密运算的第2步:把所有下标是2倍数的字符做逆时针旋转。
4.进入加密运算的第3步:把所有下标是3倍数的字符做顺时针旋转。
5.按上面的规则,第奇数步按顺时针旋转,偶数步按逆时针旋转,一直到第len步为止。

比如原文是:abcde
1.获得长度len = 5
2.1的倍数有1、2、3、4、5,所以把这5个字符按顺时针旋转,得到eabcd。
3.2的倍数有2、4,所以把这2个字符按逆时针旋转,得到ecbad。
4.3的倍数有3,所以把这1个字符按顺时针旋转,得到ecbad。
5.4的倍数有4,所以把这1个字符按逆时针旋转,得到ecbad。
6.5的倍数有5,所以把这1个字符按顺时针旋转,得到ecbad。
最后的结果是ecbad。
我写的程序是:
程序代码:
#include<stdio.h>
#include<string.h>
char p[1001];
void jishu(char p[1001], int n)
{
    char t = 0;
    int j;
    for ( j = strlen(p)-1;j >= 0;j--)
    {
        if ((j+1)%n == 0) 
        {
            t = p[j];break;
        }
    }
    for (int i = j;i >=2*n-1;i -= n)
    {
        p[i]=p[i-n];
    }
    p[n - 1] = t;
}
void oushu(char p[1001], int n)
{
    int i;
    char t = p[n - 1];
    for ( i = n - 1;i < strlen(p);i += n)
    {
            p[i] = p[i + n];
    }
    p[i - n] = t;
}
int main()
{
    int n;
    while (gets_s(p))
    {
        int len = strlen(p);
        for (int i = len;i >= 1;i--)
        {
            if (i % 2 == 0)jishu(p, i);
            else oushu(p, i);
        }
        puts(p);
    }
    return 0;
}

有简洁的算法吗?
搜索更多相关主题的帖子: 顺时针 密码 如何 加密 
2016-01-31 16:03
rainnese
Rank: 1
来 自:广州
等 级:新手上路
帖 子:51
专家分:0
注 册:2016-1-15
收藏
得分:0 
回复 2楼 beyondyf
结果好像不对,ecbad应该转换为abcde

计算机专业的大学生
2016-01-31 17:56
rainnese
Rank: 1
来 自:广州
等 级:新手上路
帖 子:51
专家分:0
注 册:2016-1-15
收藏
得分:0 
回复 3楼 rainnese
结果反了,不过题目本身有点问题,那个,你能稍稍解释下吗,有点看不懂

计算机专业的大学生
2016-01-31 18:01
rainnese
Rank: 1
来 自:广州
等 级:新手上路
帖 子:51
专家分:0
注 册:2016-1-15
收藏
得分:0 
回复 5楼 beyondyf
我已经改过来了,就是看不太懂你的思路,能说下吗

计算机专业的大学生
2016-01-31 18:11
快速回复:柏林密码破译如何写更简洁
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019576 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved