NOIP2012 提高组 复赛 day1 vigenere vigenere密码
2016-08-24 20:24
519 查看
NOIP2012 提高组 复赛 day1 vigenere vigenere密码
1、经过《算法竞赛入门经典(第2版)》第三章 数组和字符串 的训练,此题几乎没费什么力,代码就写出了。
2、写代码过程中的一个失误是将输入读成密码,明文,输出为密文,改起来没费什么周折,只是将+改成-。
3、编译后,输出与预想的不一样,跟踪调试上花了点时间,很快就改好了。
4、输出结束后要不要回撤换行,斗争了小一会,最后决定加上,不然怎么判断是完整的一行呢。
5、经对拍对比,此题10个输入输出完全正确,100分。
编译环境Dev-C++4.9.9.2
附上代码:
#include <stdio.h>
#include <string.h>
char k[100+10],m[1000+10];
int main(){
int klen,mlen;
int i,j;
int pos;
char c;
FILE *fin,*fout;
fin=fopen("vigenere.in","rb");//文件打开
fout=fopen("vigenere.out","wb");
fscanf(fin,"%s%s",k,m);
klen=strlen(k);
mlen=strlen(m);
for(i=0;i<mlen;i++){
j=i%klen;
if(k[j]>='A'&&k[j]<='Z'){//大写字母
pos=k[j]-'A';//确定偏移位置
}else{//小写字母
pos=k[j]-'a';
}
if(m[i]>='A'&&m[i]<='Z'){//大写字母
c='A'+(m[i]-'A'-pos+26)%26;
fprintf(fout,"%c",c);
}else{//小写字母
c='a'+(m[i]-'a'-pos+26)%26;
fprintf(fout,"%c",c);
}
}
putchar('\n');//换行
fclose(fin);
fclose(fout);//文件关闭
return 0;
}
1、经过《算法竞赛入门经典(第2版)》第三章 数组和字符串 的训练,此题几乎没费什么力,代码就写出了。
2、写代码过程中的一个失误是将输入读成密码,明文,输出为密文,改起来没费什么周折,只是将+改成-。
3、编译后,输出与预想的不一样,跟踪调试上花了点时间,很快就改好了。
4、输出结束后要不要回撤换行,斗争了小一会,最后决定加上,不然怎么判断是完整的一行呢。
5、经对拍对比,此题10个输入输出完全正确,100分。
编译环境Dev-C++4.9.9.2
附上代码:
#include <stdio.h>
#include <string.h>
char k[100+10],m[1000+10];
int main(){
int klen,mlen;
int i,j;
int pos;
char c;
FILE *fin,*fout;
fin=fopen("vigenere.in","rb");//文件打开
fout=fopen("vigenere.out","wb");
fscanf(fin,"%s%s",k,m);
klen=strlen(k);
mlen=strlen(m);
for(i=0;i<mlen;i++){
j=i%klen;
if(k[j]>='A'&&k[j]<='Z'){//大写字母
pos=k[j]-'A';//确定偏移位置
}else{//小写字母
pos=k[j]-'a';
}
if(m[i]>='A'&&m[i]<='Z'){//大写字母
c='A'+(m[i]-'A'-pos+26)%26;
fprintf(fout,"%c",c);
}else{//小写字母
c='a'+(m[i]-'a'-pos+26)%26;
fprintf(fout,"%c",c);
}
}
putchar('\n');//换行
fclose(fin);
fclose(fout);//文件关闭
return 0;
}
相关文章推荐
- NOIP2012 提高组 复赛 day1 game 国王游戏 再见
- NOIP 2012 提高组 复赛 day1 drive 开车旅行
- NOIP2012 提高组 复赛 day1 game
- NOIP2015复赛提高组day1(A:神奇的幻方 B:信息传递 C:斗地主)
- NOIP2012复赛提高组day2(A:同余方程 B:借教室 C:疫情控制)
- NOIP2017_提高组_复赛_DAY1
- NOIP2012提高组day1 vigenere密码 题解
- NOIP2014复赛提高组day1(A:生活大爆炸版石头剪刀布 B:联合权值 C:飞扬的小鸟)
- NOIP2014 提高组 复赛 day1 rps 生活大爆炸版石头剪刀布
- GZOJ 1361. 国王游戏【NOIP2012提高组DAY1】
- Noip2012 提高组 Day1 T1 Vigenère 密码
- NOIP 2013 提高组复赛 day1 试题 Vigenere密码
- NOIP2013 提高组 复赛 day1 circle 转圈游戏
- 2012 Noip提高组 Day1
- NOIP 提高组复赛 day1 国王游戏
- NOIP2011 提高组 复赛 day1 hotel 选择客栈
- NOIP2011 提高组 复赛 day1 mayan mayan游戏
- 7.11 noip2013提高组复赛day1
- NOIP2012复赛DAY1
- 2012Noip提高组Day1 T3 开车旅行