教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 高等教育 >

山东科技大学OJ集锦(14)

来源:网络收集 时间:2026-10-05
导读: HINT 矩阵的乘法就是一行乘以一列加起来做一个元素。 第五次作业 Problem A: 求最大值和最小值 Time Limit: 1 Sec Memory Limit: 4 MB Submit: 391 Solved: 72 [Submit][Status][Web Board] Description 求出一些整

HINT

矩阵的乘法就是一行乘以一列加起来做一个元素。 第五次作业

Problem A: 求最大值和最小值

Time Limit: 1 Sec Memory Limit: 4 MB Submit: 391 Solved: 72 [Submit][Status][Web Board] Description

求出一些整数中的最大值和最小值。 Input

输入为多行,以EOF结束。每行为一个十进制的数字,全部由0~9组成,每行最长不超过1000个字符。有些数字会以0开头(不影响数值大小的前导0)。 Output

输出为输入中的最大值和最小值,格式见sample。 Sample Input 02 010 0012 012 23

Sample Output

The maximum value is : 23 The minimum value is : 2 HINT

由于输入已经超过64bit整数的数值上限,因此应该用字符串把输入存储下来,进行大小的判断。

#include #include #define N 1001 int main() {

char s1[N],s2[N],s3[N],max[N],min[N]; int len1,len2,a,b,c,i,j,m,n,x,flag=0; gets(s1);

len1=strlen(s1);

for(i=0,x=0;s1[i]!='\\0';i++) {

if(s1[i]=='0') x++;

else break; }

for(j=x;j

strcpy(max,s2); strcpy(min,s2); a=strlen(max); b=strlen(min);

while(gets(s1)!='\\0') {

len2=strlen(s1);

for(i=0,x=0;s1[i]!='\\0';i++) {

if(s1[i]=='0') x++;

else break; }

for(j=x;j

strcpy(max,s3); a=c; }

if(a==c) {

m=strcmp(max,s3); if(m<0) strcpy(max,s3); }

if(b>c) {

strcpy(min,s3); b=c; }

if(b==c) {

n=strcmp(min,s3); if(n>0)

strcpy(min,s3); } }

if(a!=0)

printf(\ else

printf(\ if(b!=0)

printf(\ else

printf(\ return 0; }

Problem B: 回文

Time Limit: 1 Sec Memory Limit: 4 MB Submit: 279 Solved: 83 [Submit][Status][Web Board] Description

“回文(Palindrome)”是指一个串和它的倒序串完全一样,例如“文言文”、“上海在海上”、“妈妈爱我,我爱妈妈”就是回文。

接下来,你要编写一个程序来判断一个串是不是\回文\。在这里,“回文”是指一个串中大小写不敏感的英文字母(a和A是同一个字母)和数字的顺序和逆序完全相同,其他字符(如空白符、标点和其他符号等)及所在位置被忽略。 Input

输入为多行,到文件末尾结束。每行为一个串,且不会超过1000个字符,且全部由可显示的ASCII码字符组成。 Output

当一个串中的字母和数字部分能够构成一个回文,即输出“Yes.”;否则输出“No.”。 Sample Input 123 2002 +0_0+ eye hello

Revilo P.Oliver Do you know? \

Dollars make men covetous, then covetous men make dollars. A man, a plan, a canal: Panama! Sample Output No. Yes. Yes. Yes. No. Yes. No. Yes. No. Yes. HINT

首先要考虑如何去除空白符(空格、回车、换行、制表符等),标点和各种符号(如“,!\”

和“#@<>{}”等),并且把串中的英文字符统一大小写,最后才能进行回文判定。 请注意,用gets()和scanf()判断文件尾的方法是不一样的。gets()函数的返回值请查阅C语言的语法手册。 #include #include #define N 1001 int main() { char s1[N],s2[N],s3[N],s4[N]; int i,j,len1; while(gets(s1)!=NULL) { for(i=0,j=0;s1[i]!=NULL;i++) { if((s1[i]>='a'&&s1[i]<='z')||(s1[i]>='A'&&s1[i]<='Z')||(s1[i]>='0'&&s1[i]<='9')) { s2[j]=s1[i]; j++; } } s2[j]='\\0'; for(i=0;s2[i]!=NULL;i++) { if(s2[i]>='A'&&s2[i]<='Z') s3[i]=s2[i]+32; else s3[i]=s2[i]; } s3[i]='\\0'; len1=strlen(s3); for(i=(len1-1),j=0;i>=0;i--,j++) s4[j]=s3[i]; s4[j]='\\0'; if(strcmp(s4,s3)==0) printf(\ else printf(\ } return 0; }

Problem C: Caesar密码

Time Limit: 1 Sec Memory Limit: 4 MB Submit: 340 Solved: 79 [Submit][Status][Web Board] Description

古罗马时,凯撒大帝为了能够确保他与远方的将军之间的通信不被敌人的间谍所获知,发明了Caesar密码。这是一种非常简单的加法替换密码。直到1915年,俄国军队仍在使用Caesar密码,当时军队人员素质不高,稍微复杂一点的密码就很难推广。对于奥地利和普鲁士军队的密码分析家来说,这种密码再简单不过了。

Caesar密码是利用下面的字母映射表进行加密的,第一行是加密前的字母(称作明文),第二行是加密后的字母(称作密文):

明文 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

密文 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 容易发现,Caesar密码实际上是把字母表循环左移了3个字母后得到的,我们记作移位为3。 接下来,你要做一个程序,来实现与Caesar密码类似的加密算法。 Input

输入为多组数据。以一个整数m开头,后面有m组测试数据。

每组测试数据以两个整数n和k开头,后面接着有n行明文,每行明文总长度不超过10000个字符。只对明文中的大小写英文字母进行加密,其他的符号都忽略。k的取值在-25到26之间,表示密文字母相对明文字母的移位数,正数表示循环左移k个字母、负数表示循环右移k个字母。 Output

输出的结果与输入的明文顺序一致。每行明文的输出为两部分:先输出一个整数a,表示明文中有a个字符被加密,后面输出一个空格,然后输出密文,密文全部为大写字母,不输出任何其它字符。两组测试数据之间用一个空行分隔。 Sample Input 2 2 3

Love makes man grow up or sink down. …… 此处隐藏:1175字,全部文档内容请下载后查看。喜欢就下载吧 ……

山东科技大学OJ集锦(14).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/612115.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150份
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150份
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)