Cipher--POJ 1026

1、题目类型:字符串、置换群。

2、解题思路:(1)根据输入n个编码的顺序分别记录每单个字符置换的周期,记录为Cy[i];(2)编码次数k对Cy[i]分别进行求余,余数即为此字符k次置换后的位置。

3、注意事项:注意不可对整个序列求周期(此时的周期为n个单个字符周期的最小公倍数),否则TLE。

4、实现方法:

 
  
#include < iostream >
#include
< string >
using namespace std;

int n;
int pos[ 210 ],Cy[ 210 ];

void Solve()
{
int k,i,j,m,len;
char str[ 210 ],ans[ 210 ];
while (cin >> k && k)
{
getchar();
gets(str);
len
= strlen(str);
while (len < n)
{
str[len
++ ] = ' ' ;
}
str[len]
= ' \0 ' ;
for (i = 0 ;i < n;i ++ )
{
m
= k % Cy[i];
j
= i;
while (m -- )
j
= pos[j] - 1 ;
ans[j]
= str[i];
}
ans[n]
= ' \0 ' ;
cout
<< ans << endl;
}
}

int main()
{
int i,j;
while (cin >> n && n)
{
memset(Cy,
0 , sizeof (Cy));
for (i = 0 ;i < n;i ++ )
cin
>> pos[i];
for (i = 0 ;i < n;i ++ )
{
j
= i;
while (pos[j] != i + 1 )
{
j
= pos[j] - 1 ;
Cy[i]
++ ;
}
Cy[i]
++ ;
}
Solve();
cout
<< endl;
}
return 0 ;
}

 

转载于:https://www.cnblogs.com/yongze103/archive/2010/09/23/1833461.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
查看cipher-text通常需要以下步骤: 首先,了解cipher-text的定义。Cipher-text是一种经过加密处理的文本或数据,它无法被普通人直接阅读或理解。 其次,确定所使用的加密算法。常见的加密算法有对称加密算法和非对称加密算法。对称加密算法使用相同的密钥进行加密和解密,而非对称加密算法使用一对密钥,公钥用于加密,私钥用于解密。 对于对称加密算法,查看cipher-text的方法为:获取正确的密钥,使用相同的加密算法对cipher-text进行解密。只有使用正确的密钥,才能还原出原始的明文信息。 对于非对称加密算法,查看cipher-text的方法为:获取对应的私钥,使用私钥对cipher-text进行解密。由于非对称加密算法的特点是公钥加密、私钥解密,因此只有使用正确的私钥,才能解密出原始的明文信息。 在实际应用中,cipher-text的查看通常需要通过相关加密工具或编程语言进行操作。这些工具和语言提供了相应的解密功能接口,可以方便地查看cipher-text。 值得注意的是,对于较为复杂的加密算法和密钥长度,即使获取了正确的密钥或私钥,也不一定能够在可接受的时间范围内解密cipher-text。因此,在实际应用中,保护密钥的安全性至关重要,只有合法的使用者才能够拥有正确的密钥,并且应该限制对cipher-text的访问权限,以确保数据的安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值