ACM试题及答案_第1页
ACM试题及答案_第2页
ACM试题及答案_第3页
ACM试题及答案_第4页
ACM试题及答案_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、中国石油大学华东ACM试题(黄色高亮为答案)问题 A: A + B Problem题目描述给定两个整数a, b,求两个数之和。输入输入仅有一行,两个整数a, b (0<=a, b<=10).输出输出 a+b的值。样例输入1 2样例输出3提示Q: Where are the input and the output?A: Your program shall always read input from stdin (Standard Input) and write output to stdout (Standard Output). For example, you can u

2、se 'scanf' in C or 'cin' in C+ to read from stdin, and use 'printf' in C or 'cout' in C+ to write to stdout. You shall not output any extra data to standard output other than that required by the problem, otherwise you will get a "Wrong Answer". User program

3、s are not allowed to open and read from/write to files. You will get a "Runtime Error" or a "Wrong Answer" if you try to do so.Q: 输入输出需要怎么实现?A:你的程序必须从stdin(Standard Input标准输入)中读入,将输出数据输出到stdout(Standard Output)。例如,在C语言中使用scanf和printf,在C+语言中使用cin和cout。除了题目要求,不允许输出额外的信息,例如“按任意键退出”、

4、“请输入n的值:”等等。否则将会得到Wrong Answer。 请不要在程序结束时加上system("pause")等调试信息。 同时,你的程序不允许读取文件或输出到文件中,否则会得到Runtime Error或Wrong Answer。#include <stdio.h>int main() int a,b; scanf("%d %d",&a,&b); printf("%dn",a+b); return 0;问题 B: A + B Problem I时间限制: 1 Sec 内存限制: 128 MB提交:

5、2846 解决: 2191提交状态讨论版题目描述给定两个整数a, b,求两个数之和。输入输入数据有多行.每行数据中含有两个整数a, b (0<=a, b<=109).如果对读取输入数据方式产生疑问,请参考HINT。输出对每行数据,输出对应a+b的值。样例输入123 50060 8070 90样例输出623140160提示与Problem 1000不同的是,本题的输入数据要求以EOF作结尾。EOF即End of File,可以表示文件结尾,也可以表示标准输入的结尾。在ACM竞赛中,评测采用标准输入输出。当题目中提示“输入以EOF为结束”,或未指明数据组数时,往往无法将数据一次性读入存

6、入数组中,经过计算后再输出。在这种情况下,可以采用以下方式读取数据: 下面给出本题C语言代码示例。#include <stdio.h>int main() int a,b; while(scanf("%d %d",&a, &b)!=EOF) / 输入结束时,scanf函数返回值为EOF,即没有数据输入时则退出while循环 printf("%dn",a+b); return 0;您可参考上面给出的示例程序完成本题。当您在本机上测试时,如果采用标准输入,需要在输入数据结束后手动输入EOF。在Windows下,按下Ctrl-Z,在

7、Linux下,按下Ctrl-D即可。如果采用从文件读入(或重定向输入输出流到文件),则不必在文件结尾添加其他字符。但请注意,在提交代码前请将freopen、fopen等语句注释或删除。#include <stdio.h>/EOF方法,因为在在线评判中,所有输入都是用文件来模拟输入的,因此EOF方法成为了一种常见方法int main() int a,b; while(scanf("%d %d",&a, &b)!=EOF) printf("%dn",a+b); return 0;问题 C: A + B Problem II时间限制

8、: 1 Sec 内存限制: 128 MB提交: 2638 解决: 2161提交状态讨论版题目描述给定两个整数a, b,求两个数之和。输入:输入数据中的第一行是一个正整数T (0<=T<=1000).接下来有T行数据。每行数据中含有两个整数a, b (-103<=a, b<=103). 输出:对每行数据,输出对应a+b的值。样例输入31 2100 100300 300样例输出3200600提示与Problem 1001不同的是,本题给定了输入数据组数T。本题仍然需要采用循环读入。下面给出三个示例程序。示例1:使用for循环,一边读入一边输出#include <std

9、io.h>int main() int T, a, b, i; scanf("%d",&T); for(int i=0; i<T; i+) scanf("%d%d", &a, &b); printf("%dn",a+b); return 0;示例2:使用while循环,一边读入一边输出#include <stdio.h>int main() int T, a, b; scanf("%d",&T); while(T-) scanf("%d%d"

10、;, &a, &b); printf("%dn",a+b); return 0;示例3:使用for循环,将数据存入数组后再处理。当T较大时,不建议采取此种方法#include <stdio.h>int main() int T, a1010, b1010, i; scanf("%d",&T); for(int i=0; i<T; i+) scanf("%d%d", &ai, &bi); for(int i=0; i<T; i+) printf("%dn"

11、;,ai+bi); return 0;#include <stdio.h>/这是典型的计数法,根据给定数值决定输入数量/方法1int main() int ls,a,b,i; scanf("%d",&ls); for (i = 0; i < ls; i+) scanf("%d %d", &a, &b); printf("%dn",a+b); return 0;/方法二int main() int ls,a,b,i; scanf("%d",&ls); while (l

12、s-)/利用整数和逻辑类型之间的对应关系 scanf("%d %d", &a, &b); printf("%dn",a+b); return 0;问题 D: A + B Problem III题目描述给定两个整数a, b,求两个数之和。输入输入数据有多行。每行数据中含有两个整数a, b (0<=a, b<=109).最后一行数据是0 0,标志着输入结束。0 0 一行本身不需要计算输出。如果对读取输入数据方式产生疑问,请参考HINT。输出对每行数据,输出对应a+b的值。样例输入123 50060 8070 900 0样例输出62

13、3140160提示与Problem 1001相似,本题的输入数据组数未知,但给出了0 0作为输入的结束符。您可以据此编制程序。(提示:判断a、b的值是否全为0)题目描述给定一些整数,对他们求和。输入输入数据有多行。每行数据中第一个整数N (0<=N<=100),后面跟着N个整数ai (-1000<=ai<=1000)最后一行数据是0,标志着输入结束。0一行本身不需要计算输出。输出对每一行N个正整数ai求和并输出。样例输入4 1 2 3 45 1 2 3 4 50样例输出1015#include <stdio.h>/这种输入被称为哨兵法,选择一个特定的值作为结

14、束标记,也就是一个哨兵,防止你超出范围。在这个题目中的哨兵就是0/方法1(推荐方法)int main() int a,b; while(1) scanf("%d %d",&a, &b); if (a = 0 && b = 0) break; printf("%dn",a+b); return 0;/方法2int main() int a,b; scanf("%d %d",&a, &b);/先读一次 while(a != 0 | b != 0) printf("%dn"

15、,a+b); scanf("%d %d",&a, &b); return 0;/方法3int main() int a,b; do scanf("%d %d",&a, &b); if (a = 0 && b = 0) break; printf("%dn",a+b); while(a != 0 | b != 0); return 0;/方法4int main() int a,b; while(scanf("%d %d",&a, &b),a != 0 |

16、 b != 0)/利用逗号表达式,逗号表达式从左向右计算,它的返回结果是最后一个表达式的结果 printf("%dn",a+b); return 0;问题 E: A + B Problem IV题目描述给定一些整数,对他们求和。输入输入数据有多行。每行数据中第一个整数N (0<=N<=100),后面跟着N个整数ai (-1000<=ai<=1000)最后一行数据是0,标志着输入结束。0一行本身不需要计算输出。输出对每一行N个正整数ai求和并输出。样例输入4 1 2 3 45 1 2 3 4 50样例输出1015#include <stdio.h

17、>/哨兵法和计数法的复合输入int main() int num,sum,tmp,i; while (scanf("%d",&num),num!=0) sum = 0; while(num-) scanf("%d",&tmp); sum += tmp; printf("%dn",sum); 问题 F: A + B Problem VYour task is to calculate the sum of some integers.输入Input contains an integer N in the firs

18、t line, and then N lines follow. Each line starts with a integer M, and then M integers follow in the same line.输出For each group of input integers you should output their sum in one line, and with one line of output for each line in input.样例输入24 1 2 3 45 1 2 3 4 5样例输出1015#include <stdio.h>/计数法

19、和计数法的复合int main() int num,num2,sum,tmp,i,j; scanf("%d",&num); while(num-) scanf("%d",&num2); sum = 0; while(num2-) scanf("%d",&tmp); sum += tmp; printf("%dn",sum); return 0;问题 G: A + B Problem VI时间限制: 1 Sec 内存限制: 128 MB题目描述Your task is to calculate

20、 the sum of some integers.输入Input contains multiple test cases, and one case one line. Each case starts with an integer N, and then N integers follow in the same line.输出For each test case you should output the sum of N integers in one line, and with one line of output for each line in input.样例输入4 1

21、2 3 45 1 2 3 4 5#include <stdio.h>/EOF方法和计数法的复合int main() int num,sum,tmp,i; while(scanf("%d",&num)!=EOF) sum = 0; for (i = 0; i < num; i+) scanf("%d",&tmp); sum += tmp; printf("%dn",sum); return 0;问题 H: A + B Problem VII题目描述Your task is to Calculate a

22、+ b.输入The input will consist of a series of pairs of integers a and b, separated by a space, one pair of integers per line.输出For each pair of input integers a and b you should output the sum of a and b, and followed by a blank line.样例输入1 510 20样例输出630#include <stdio.h>int main() int a,b; while

23、(scanf("%d %d",&a,&b)!=EOF) printf("%dnn",a + b);/注意,题目中要求每行输出后面加一个空行 return 0;问题 I: A + B Problem VIII题目描述Your task is to calculate the sum of some integers.输入Input contains an integer N in the first line, and then N lines follow. Each line starts with a integer M, and t

24、hen M integers follow in the same line.输出For each group of input integers you should output their sum in one line, and you must note that there is a blank line between outputs.样例输入34 1 2 3 45 1 2 3 4 53 1 2 3样例输出10156#include <stdio.h>/计数法和计数法的复合int main() int num,num2,sum,tmp,i,j; scanf("

25、;%d",&num); for (i = 0; i < num; i+) scanf("%d",&num2); sum = 0; for (j = 0; j < num2; j+) scanf("%d",&tmp); sum += tmp; printf("%dnn",sum); return 0;China University of Petroleum 主页 讨论版 问题 状态 排名 9 竞赛&作业 名校联赛 常见问答 划词翻译 开启修改帐号 1503030406 (0) Re

26、cent 注销 “端点杯”2015年中国石油大学新生赛敬请关注!China University of Petroleum Online Judge FAQQ:这个在线裁判系统使用什么样的编译器和编译选项?A:系统运行于Debian/Ubuntu Linux. 使用GNU GCC/G+ 作为C/C+编译器, Free Pascal 作为pascal 编译器 ,用 sun-java-jdk1.6 编译 Java. 对应的编译选项如下:C:gcc Main.c -o Main -fno-asm -O2 -Wall -lm -static -std=c99 -DONLINE_JUDGEC+:g+ M

27、ain.cc -o Main -fno-asm -O2 -Wall -lm -static -DONLINE_JUDGEPascal:fpc Main.pas -oMain -O1 -Co -Cr -Ct -CiJava:javac -J-Xms32m -J-Xmx256m Main.java *Java has 2 more seconds and 512M more memory when running and judging.编译器版本为(系统可能升级编译器版本,这里直供参考):gcc (Ubuntu/Linaro 4.4.4-14ubuntu5) 4.4.5glibc 2.3.6Fr

28、ee Pascal Compiler version 2.4.0-2 2010/03/06 for i386java version "1.6.0_22"Q:程序怎样取得输入、进行输出?A:你的程序应该从标准输入 stdin('Standard Input')获取输出 并将结果输出到标准输出 stdout('Standard Output').例如,在C语言可以使用 'scanf' ,在C+可以使用'cin' 进行输入;在C使用 'printf' ,在C+使用'cout'进行输出

29、.用户程序不允许直接读写文件, 如果这样做可能会判为运行时错误 "Runtime Error"。下面是 1000题的参考答案C+:#include <iostream>using namespace std;int main() int a,b; while(cin >> a >> b) cout << a+b << endl;return 0;C:#include <stdio.h>int main() int a,b; while(scanf("%d %d",&a, &b) != EOF) printf("%dn",a+b);return 0;PASCAL:program p1001(Input,Output); var a,b:Integer; begin while not eof(Input) do begin Readln(a,b); Writeln(a+b); end; end.Java:import java.util.*;public class Mainpu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论