我有一个绝妙的想法,但是没有通过

P1914 小书童——凯撒密码

q_n_q @ 2022-11-26 23:59:24

求大佬看看 ps.最开始不管是一个还是两个getchar都过不了, 但是只有一个getchar可以在本地运行。


#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
int n;
char c;
int main()
{
    scanf("%d",&n);
    getchar();
    while((c=getchar())!='\n')printf("%c",(c-'a'+n)%26+'a');
}

by zzczzczzc @ 2022-11-27 01:07:58

评测数据并不一定以'\n'结尾,但是一定以EOF结尾\ windows中都是\r\n为一行,所以读两次

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
int n;
char c;
int main()
{
    scanf("%d",&n);
    getchar(),getchar();
    while((c=getchar())!=EOF)printf("%c",(c-'a'+n)%26+'a');
}

或者直接用方便的C++

#include <bits/stdc++.h>
using namespace std;
int n;
string s;
int main(){
    cin>>n>>s;
    for(auto i:s)cout<<(char)((i-97+n)%26+97);
    return 0;
}

by q_n_q @ 2022-11-27 11:27:55

@zzczzczzc 谢谢


by q_n_q @ 2022-11-27 22:18:11

@zzczzczzc 请问一下怎么在自己的电脑上输入EOF呢


by zzczzczzc @ 2022-11-28 21:46:47

@proteinfame ctrl+z或者ctrl+d


|