




免费预览已结束,剩余21页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Problem A: 只有一个二元运算符的表达式运算Time Limit: 1 SecMemory Limit: 2 MB Submit: 5044Solved: 1937SubmitStatusWeb BoardDescription编程序读入并计算只有一个二元运算符的表达式的值。用到的二元运算符有:“+”、“-”、“*”、“/”、“%”,与C语言的语法一致。Input每行输入一个表达式,格式为:二个整型的操作数a和b,中间用一个符号分开,这个符号就是运算符。测试样例不存在除数为0的情况。输入以a和b为0,且用一个空格分开结束。Output每行对应输入的运算符为“+”、“-”、“*”、“/”、“%”,则计算a+b、a-b、a*b、a/b、a%b的值;否则输出“invalid op”。Sample Input33+58*92.21-617/39%30 0Sample Output3872invalid op-550#include #include void main() int i,a,b; char c; for(i=0;iF”表示输出:摄氏华氏温度转换表,若为“F-C”表示输出:华氏摄氏温度转换表。第2、3行为两个整数:high和low,其值在-100到200之间。第4行为step,step精确到小数点后1位。Output输出第一行为C和F,分别表示摄氏和华氏,与小数点对齐。若输出摄氏华氏温度转换表,则C在前、F在后;反之,则输出华氏摄氏温度转换表。从输出的第2行开始为从温度low到温度high(包括low和high)的转换表,温度输出精确到小数点后1位,表格被“-”分为两个宽度相同的部分,其它的测试样例也不会给出超出宽度的数据,格式详见sample。Sample InputC-F-10402.5Sample Output C - F-10.0 - 14.0 -7.5 - 18.5 -5.0 - 23.0 -2.5 - 27.5 0.0 - 32.0 2.5 - 36.5 5.0 - 41.0 7.5 - 45.5 10.0 - 50.0 12.5 - 54.5 15.0 - 59.0 17.5 - 63.52 20.0 - 68.0 22.5 - 72.5 25.0 - 77.0 27.5 - 81.5 30.0 - 86.0 32.5 - 90.5 35.0 - 95.0 37.5 - 99.5 40.0 - 104.0HINT输出格式可以通过sample分析出来,因为两栏的总宽度是固定的。一个隐藏的陷阱是step是浮点数,某些浮点数是无法精确存储的,因此经过一定量的计算后这个误差会影响到浮点数的相等性判断,需要加上精度控制。Append CodeSubmitStatusWeb Board#include int main() double low,high; double step,c,f; char ch1,ch2; scanf(%c-%c,&ch1,&ch2); if(ch1=C&ch2=F) scanf(%lf%lf%lf,&low,&high,&step); f=(double)9/5*low+32; if(low=-100|f F); while(low %6.1lf,low,f); low+=step; return 0; printf( C - F); while(low %5.1lf,low,f); low+=step; return 0; else if(ch1=F&ch2=C) scanf(%lf%lf%lf,&low,&high,&step); c=(low-32)*(double)5/9); if(low=-100|c C); while(low %6.1lf,low,c); low+=step; return 0; printf( F - C); while(low %5.1lf,low,c); low+=step; return 0; Problem C: 1!+2!+k!=?Time Limit: 1 SecMemory Limit: 2 MBSubmit: 5125Solved: 1645SubmitStatusWeb BoardDescription求1!+2!+k!=?,并判断是否溢出。Input输入为一个正整数k。Output若1!+2!+k!的值溢出unsigned(无符号整型)的范围输出“overflow”,否则输出1!+2!+k!的结果。Sample Input5Sample Output153HINT如果一个值溢出某个变量的数据类型存储范围,但仍然存入该变量,那么存入该变量中的值实际上是什么?Append Code#include int main() int i,j; unsigned int s,b,a; s=0; scanf(%d,&j); b=1; for(i=1;i=j;i+) a=b; b=b*i; if(double)b/ai) printf(overflown); return 0; s=s+b; printf(%un,s); return 0; Problem D: 辗转相除法Time Limit: 1 SecMemory Limit: 2 MBSubmit: 3383Solved: 1185SubmitStatusWeb BoardDescription辗转相除法,也称欧几里得算法,是求最大公约数的算法。辗转相除法首次出现于欧几里得的几何原本(第VII卷,命题i和ii)中,而在中国则可以追溯至东汉出现的九章算术。两个整数的最大公约数(亦称公约数)是能够同时整除它们的最大的正整数。辗转相除法基于如下原理:两个整数的最大公约数等于其中较小的数和两数的差的最大公约数。例如,252和105的最大公约数是21(252 = 21 12;105 = 21 5);因为252 105 = 147,所以147和105的最大公约数也是21。在这个过程中,较大的数缩小了,所以继续进行同样的计算可以不断缩小这两个数直至其中一个变成零。这时,所剩下的还没有变成零的数就是两数的最大公约数。例如,计算a = 1071和b = 462的最大公约数的过程如下:从1071中不断减去462直到小于462(可以减2次,即商q0 = 2),余数是147: 1071 = 2 462 + 147.然后从462中不断减去147直到小于147(可以减3次,即q1 = 3),余数是21: 462 = 3 147 + 21.再从147中不断减去21直到小于21(可以减7次,即q2 = 7),没有余数: 147 = 7 21 + 0.此时,余数是0,所以1071和462的最大公约数是21。Input输入为多行,每行有一对非负整数a,b,且a*b不会超出int类型的数据范围。输入至EOF结束。Output每行输出一对a,b的最大公约数和最小公倍数,顺序与输入对应。从整除定义出发:若a整除b(b除以a没有余数),则b是a的倍数,a是b的约数,这里要求b不为0。因此0是任意整数的倍数(任意整数都是0的约数),但是0不能是约数。Sample Input1 12 32 23 24 67 512 618 924 36Sample Output1 11 62 21 62 121 356 129 1812 72HINT按照题目描述所给的算法解题,注意以下几点:辗转相除法对两个数的大小关系有要求,根据倍数和约数的数学定义,一个非0数和0的约数是多少?辗转相除法的计算过程是符合这种定义的。Append CodeSubmitStatusWeb Board错误:#include int main() int a,b,i,c; for(;scanf(%d%d,&a,&b)!=-1;) c=a*b; if(a=0&b!=0) printf(%d %dn,b,a); else if(a!=0&b=0) printf(%d %dn,a,b); else while(a!=b) if(ab) a=a-b; if(ab) b=b-a; printf(%d %dn,a,c/a); 正确:#include int main() int a,b,c,m,t; while(scanf(%d %d,&a,&b)!=EOF) if(a=0&b!=0) printf(%d %dn,b,a); else if(a!=0&b=0) printf(%d %dn,a,b); else if(ab) t=a; a=b; b=t; m=a*b; c=a%b; while(c!=0) a=b; b=c; c=a%b; printf(%d %dn,b,m/b); Problem E: Sum Problem (II) : Input/Output PracticeTime Limit: 1 SecMemory Limit: 2 MBSubmit: 2765Solved: 1959SubmitStatusWeb BoardDescription计算若干整数的和,这些整数都是小于1000的非负整数。Input输入的第一行是一个整数M,后面有M个测试样例。每个测试样例以一个整数N开始,后面接着是N个整数。Output每组测试样例对应一行输出,为所给的N个整数之和,顺序与输入对应。Sample Input23 1 2 35 10 15 20 30 50Sample Output6125HINT用双重循环解决这个问题,外层循环控制用例的输入,内层循环控制读取N个整数。Append Code#include int main() int m,n,a,i,j,s; scanf(%d,&m); for(j=1;j=m;j+) scanf(%d,&n); s=0; for(i=1;i=n;i+) scanf(%d,&a); s=s+a; printf(%dn,s); Problem F: Sum Problem (III) : Input/Output PracticeTime Limit: 1 SecMemory Limit: 2 MBSubmit: 2521Solved: 1817SubmitStatusWeb BoardDescription计算若干整数的和,这些整数都是小于1000的非负整数。Input输入为多行,每行为一组测试样例。每个测试样例以一个整数N开始,后面接着是N个整数。当输入的N为0时表示输入结束。Output每组测试样例对应一行输出,为所给的N个整数之和,顺序与输入对应。Sample Input3 1 2 305 10 15 20 30 500Sample Output6125HINT用双重循环解决这个问题,外层循环控制用例的输入,内层循环控制读取N个整数。Append Code#include int main() int n,a,i,s; for(;scanf(%d,&n);) if(n=0) break; else s=0; for(i=1;i=n;i+) scanf(%d,&a); s=s+a; printf(%dn,s); Problem G: 百钱买百鸡问题Time Limit: 1 SecMemory Limit: 2 MBSubmit: 4464Solved: 800SubmitStatusWeb BoardDescription“百钱买百鸡”是我国著名的古代数学问题,中国古代数学家张丘建在他的算经中提出了这样一个问题:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?你的任务是求解下面这个问题。问题是这样描述的:a文钱可买一只公鸡,b文钱可买一只母鸡,c文钱可买d只小鸡。用m文钱买n只鸡,那么有公鸡x只、母鸡y只、小鸡z只。求解出符合题意的x,y,z。Input输入为一张表。第一行是一个固定不变的表头,格式见sample。后面有多行,每行为一组测试数据。每组测试数据由6个整数组成,分别为“a,b,c/d,m,n”。满足0a,b,c,d=50,50=m,n=108+1,并且母鸡和小鸡的单价不会相同。Output每组测试数据的运行结果输出为一张表,表头固定为“COCKS,HENS,CHICKS”。每组测试数据的一个可行解数出为一行,为三个整数:“x,y,z”。多组解按照公鸡数从少到多的顺序输出。若测试数据无解则输出“Cannot buy!”。两组测试数据之间用一个空行分隔开。Sample InputCOCK,HEN,CHICK,MONEY,CHICKS3,2,1/3,100,1005,3,1/3,100,1008,5,1/7,100,1008,5,1/7,300,300Sample OutputCOCKS,HENS,CHICKS0,40,605,32,6310,24,6615,16,6920,8,7225,0,75COCKS,HENS,CHICKS0,25,754,18,788,11,8112,4,84Cannot buy!COCKS,HENS,CHICKS8,40,252HINT本题重点在于了解多重循环的运行效率问题,减少一层循环可以降低很大规模的运算量。通过在循环体内加计数器可以统计出循环的运行次数,当测试数据变大时,运行次数的增长会非常可观,这就是超时的原因了。Append CodeEg:#includevoid main() int a,b,c; for(a=1;a20;a+) for(b=1;b33;b+) for(c=3;c100;c+=3) if(a+b+c=100)&(a*5+b*3+c/3=100) printf(a=%d,b=%d,c=%d,a,b,c); 答案:#include #include int main() char s50; long int a,b,m,n,x,y,z,flag; int c,d; gets(s); while(scanf(%ld,%ld,%d/%d,%ld,%ld,&a,&b,&c,&d,&m,&n)!=EOF) flag=0; for(x=0; x=n; x+) if(a-b)*x+b*n-m)*d)%(b*d-c)=0) z=(a-b)*x+b*n-m)*d)/(double)(b*d-c); y=n-z-x; if(fabs(a*x+b*y+z*c/(double)d-m)=0&y=0&z=0) flag=1; if(flag=0) printf(Cannot buy!n); else printf(COCKS,HENS,CHICKSn); for(x=0; x=n; x+) if(a-b)*x+b*n-m)*d)%(b*d-c)=0) z=(a-b)*x+b*n-m)*d)/(double)(b*d-c); y=n-z-x; if(fabs(a*x+b*y+z*c/(double)d-m)=0&y=0&z=0) printf(%ld,%ld,%ldn,x,y,z); printf(n); return 0;Problem H: Print Graphics Problerm (II)Time Limit: 1 SecMemory Limit: 16 MBSubmit: 2378Solved: 845SubmitStatusWeb BoardDescription向标准输出上打印一些用ASCII字符组成的图形。Input输入为多个整数n,0n100。当n为0时结束输入。Output若n为偶数,则输出一个正向的n层等腰三角形;n为奇数,则输出一个倒向的n层等腰三角形。三角形由“+”组成。任意两个图形之间有一个空行分隔,格式见sample。Sample Input540Sample Output+ + + + + + + +HINTAppend CodeSubmitStatusWeb Board 中文 English All Copyright Reserved 2010-2011 SDUSTOJ TEAMGPL2.0 2003-2011 HUSTOJ Project TEAMAnything about the Problems, Please Contact Admin:admin#includeint main() int n,i,j; while(n!=0) scanf(%d,&n); if(n%2=0&n!=0) for(i=1;i=n;i+) for(j=1;j=n-i;j+) printf( ); for(j=1;j=1;i-) for(j=n-i;j=1;j-) printf( ); for(j=2*i-1;j=1;j-) printf(+); printf(n); printf(n); return 0;Problem I: 编写函数:求三个整数的最大值 (Append Code)Time Limit: 1 SecMemory Limit: 2 MBSubmit: 1995Solved: 913SubmitStatusWeb BoardDescription求三个整数的最大值。-编写一个函数maxValue()求三个整数的最大值。其原型为:int maxValue(int a,int b,int c);功能:函数的三个参数传入a,b,c的值,返回其中最大值。函数的调用格式见“Append Code”。Input输入三个int类型的整数,两两之间用空格隔开。Output输出三个整数的最大值。Sample Input1 2 3Sample Output3HINT参看系统首页上的“Append Code”使用说明,讨论版(Web Board)上也有。Append Codeappend.c, append.cc, SubmitStatusWeb Board 中文 English All Copyright Reserved 2010-2011 SDUSTOJ TEAMGPL2.0 2003-2011 HUSTOJ Project TEAMAnything about the Problems, Please Contact Admin:admin#include int maxValue(int a,int b,int c) int x; x=ab?a:b; if(xc) x=c; return x; int main() int x,y,z; scanf(%d%d%d,&x,&y,&z); printf(%d,maxValue(x,y,z); return 0; 正确:#include int maxValue(int a,int b,int c)if(ab&bc)return a;else if(ba&bc)return b;else if(ca&cb)return c;Time Limit: 1 SecMemory Limit: 2 MBSubmit: 1064Solved: 448SubmitStatusWeb BoardDescription判断给定的一个字符是否是元音字母(a,e,i,o,u)?-用C语言实现:append.c中函数原型为int is_vocals(char c);功能:若c是元音字母返回1,否则返回0。用C+实现:append.cc中函数原型为bool isVocals(char c);功能:若c是元音字母返回true,否则返回false。函数的调用格式见“Append Code”。Input输入一个字母。Output如果是一个元音字母,则输出:It is a vocals.否则输出:It is not a vocals.Sample InputaSample OutputIt is a vocals.HINT参看系统首页上的“Append Code”使用说明,讨论版(Web Board)上也有。Append Codeappend.c, append.cc, SubmitStatusWeb Board 中文 English All Copyright Reserved 2010-2011 SDUSTOJ TEAMGPL2.0 2003-2011 HUSTOJ Project TEAMAnything about the Problems, Please Contact Admin:admin#includeint is_vocals(char c) if(c=a|c=e|c=i|c=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度样板房样板间租赁与展示协议
- 2025年金融机构安全防护服务合同范本
- 2025年度物联网创业借款合同范本模板
- 2025版体育设施委托代建管理协议
- 贵州省大方县2025年上半年事业单位公开遴选试题含答案分析
- 2025版室外地面铺砖施工进度跟踪合同
- 2025年度房产买卖及社区配套服务协议
- 2025年度建筑测绘简单合同范本
- 2025版税务局税收筹划与税务筹划支持合同
- 2025贷款反担保协议范本:跨境电商贷款反担保示范
- 2025-2026学年人音版(简谱)(2024)初中音乐七年级上册教学计划及进度表
- (2025年标准)佛教无偿捐赠协议书
- 学堂在线 足球运动与科学 章节测试答案
- 公众号合作合同范本
- 2025-2026学年冀教版(三起)(2024)小学英语三年级上册教学计划及进度表
- 山西大同大学《物联网控制》2024-2025学年第一学期期末试卷
- 医院感染病例监测与报告
- 2025新课标中考英语词汇表
- 楼梯 栏杆 栏板(一)22J403-1
- 国家城镇救援队伍能力建设与分级测评指南
- 口腔修复学-纤维桩-PPT课件
评论
0/150
提交评论