题目:字母表c++题解
题目描述
给定一个无限循环的字母表:
a b c d e f g h i j k l m n o p q r s t u v w x y z a b c d e f g h i j k l
m n o p q r s t u v w x y z a b c d e f g h i j k l m n o p q r s t u v w …
一个字母a在每一时刻都会向前跳K步变为相应字母,如:
‘n’每一时刻会向前跳3步,第一时刻变为’q’,第二时刻变为’t’…
‘w’每一时刻会向前跳2步,第一时刻变为’y’,第二时刻变为’a’…
现在给定一个字母a,向前跳的步数K和时刻T,问最后变为哪一个字母
输入
第一行询问数n(0<n<=100)
接下来n行询问,每行给出一个字母a[‘a’…‘z’],向前跳的步数K和时刻T
【数据范围】
对于30%的数据,0<=K,T<=10000
对于100%的数据,0<=K,T<=10^16
输出
共1行,每个对应询问的答案之间用空格隔开
样例输入
3
a 2 2
n 3 1
n 3 2
样例输出
e q t
Cake 1#
#include<iostream>
using namespace std;
char a[101];
int p,q;
int main()
{
char x;
unsigned long long k,t;
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>x>>k>>t;
q=x;
p=(k%26*t)%26;
if(p+q>122)
p-=26;
x+=p;
a[i]=x;
}
for(int i=1;i<=n;i++)
{
cout<<a[i]<<" ";
}
return 0;
}
Cake 2#
#include<cstdio>
long long n,x,k,c,i;
char cc;
int main()
{
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("\n");
scanf("%c %lld %lld",&cc,&x,&k);
c=cc-97;
c=c+k*x;
c%=26;
printf("%c ",c+97);
}
}