华师一附中OI组
标题:
P1914 小书童——密码
[打印本页]
作者:
admin
时间:
2018-4-24 15:05
标题:
P1914 小书童——密码
https://www.luogu.org/problemnew/show/P1914
题目背景
某蒟蒻迷上了“小书童”,有一天登陆时忘记密码了(他没绑定邮箱or手机),于是便把问题抛给了神犇你。
题目描述
蒟蒻虽然忘记密码,但他还记得密码是由一串字母组成。且密码是由一串字母每个向后移动n为形成。z的下一个字母是a,如此循环。他现在找到了移动前的那串字母及n,请你求出密码。(均为小写)
输入输出格式
输入格式:
第一行:n。第二行:未移动前的一串字母
输出格式:
一行,是此蒟蒻的密码
输入输出样例
输入样例#1:
1
qwe
输出样例#1:
rxf
说明
字符串长度<=50
作者:
GTR
时间:
2018-5-18 23:19
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
string s;
int n,i,j;
cin>>n;
cin>>s;
for(i=0;i<s.size();++i)
{
for(j=1;j<=n;++j)
{
++s[i];
if(s[i]>'z')
s[i]='a';
}
}
cout<<s;
return 0;
}
复制代码
作者:
WJL
时间:
2018-5-23 21:35
#include<iostream>
#include<cstring>
using namespace std;
int n,i,j;
string k;
int main()
{
cin>>n;
cin>>k;
for(i=0;i<k.size();i++)
{
for(j=1;j<=n;j++)
{
k[i]++;
if(k[i]>'z')
k[i]='a';
}
}
cout<<k;
return 0;
}
复制代码
作者:
WJL
时间:
2018-5-23 21:35
#include<iostream>
#include<cstring>
using namespace std;
int n,i,j;
string k;
int main()
{
cin>>n;
cin>>k;
for(i=0;i<k.size();i++)
{
for(j=1;j<=n;j++)
{
k[i]++;
if(k[i]>'z')
k[i]='a';
}
}
cout<<k;
return 0;
}
复制代码
作者:
徐翊凯
时间:
2018-5-25 16:46
#include<iostream>
using namespace std;
int n,i,j;
string s;
int main()
{
cin>>n;
cin>>s;
for(i=0;i<s.size();i++)
{
for(j=1;j<=n;j++)
{
s[i]++;
if(s[i]>'z')
s[i]='a';
}
}
cout<<s;
return 0;
}
复制代码
作者:
admin
时间:
2018-5-25 16:53
为什额都这么复杂呢?看看我的吧
#include <iostream>
using namespace std;
string s,t;
int n,i,l;
int main()
{
cin>>n;
n=n%26; ///大于26的没有意义
cin>>s;
t="";
l=s.size();
for(i=0; i<=l-1; i++)
{
int k=s[i]+n;
if (k>'z') k-=26; ///大于z则回折 这里不能%
t=t+char(k);
}
cout<<t;
}
复制代码
作者:
admin
时间:
2018-5-25 19:27
张君豪 发表于 2018-5-18 20:28
第9-11句也许可以这样写
while (n<97 || n>122) n-=26;
复制代码
作者:
admin
时间:
2018-5-25 19:31
GTR 发表于 2018-5-18 23:19
第14-16句 应该这写
s[i]=s[i]+n;
while (s[i]>'z') s[i]-=26;
复制代码
作者:
酱油咸
时间:
2018-6-30 17:22
#include <iostream>
using namespace std;
string s,t;
int n,i,l;
int main()
{
cin>>n;
n=n%26;
cin>>s;
t="";
l=s.size();
for(i=0; i<=l-1; i++)
{
int k=s[i]+n;
if (k>'z') k=k-26;
t=t+char(k);
}
cout<<t;
return 0;
}
江有焓的程序
作者:
倚窗倾听风吹雨
时间:
2018-7-1 14:26
#include<iostream>
#include<cstring>
using namespace std;
int n,i,j=0;
char a[50];
int main()
{
cin>>n;
cin>>a;
while(a[j]!=0)j++;
for(i=0;i<j;i++)a[i]=(a[i]-'a'+n+26)%26+'a';
for(i=0;i<j;i++)cout<<a[i];
return 0;
}
复制代码
作者:
universehyf
时间:
2018-7-1 14:45
#include<iostream>
#include<string>
using namespace std;
string s;int n,i;
int main()
{
cin>>n>>s;
for(i=0;i<=s.length()-1;i++)
s[i]=(s[i]-'a'+n)%26+'a';
cout<<s;
return 0;
}
作者:
admin
时间:
2018-7-1 18:25
大家注意到没有,万一n是负的么办?程序要尽量考虑健壮性,仔细体会下我的程序。
作者:
universehyf
时间:
2018-7-8 15:35
#include<iostream>
#include<string>
using namespace std;
string s;int n,i;
int main()
{
cin>>n>>s;
for(i=0;i<=s.length()-1;i++)
s[i]=(s[i]-'a'+n)%26+'a';
cout<<s;
return 0;
}
复制代码
作者:
admin
时间:
2018-7-27 19:29
这个题有个很大的坑,要是字母z加上25就会超出字符的范围,字符的范围是0-127,引发错误。小心小心。
作者:
walk_alone
时间:
2018-8-1 19:58
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n,i,len;
char a[100001],b[100001],shit[10];
scanf("%d",&n);
gets(shit);
gets(a);
len=strlen(a);
for(i=0;i<len;i++)
{
if(a[i]+n>'z')
{
a[i]=a[i]-26;
b[i]=a[i]+n;
}
else
b[i]=a[i]+n;
}
puts(b);
return 0;
}
复制代码
作者:
黄煦喆
时间:
2018-8-1 20:26
#include<iostream>
using namespace std;
int n;
string alphabet="abcdefghijklmnopqrstuvwxyz";
string s;
int main()
{
cin>>n>>s;
for(int i=0;i<s.size();i++)cout<<alphabet[(s[i]-'a'+n)%26];
return 0;
}
复制代码
欢迎光临 华师一附中OI组 (http://hsyit.cn/)
Powered by Discuz! X3.2