当前位置:首页 >> 其它 >> ACM试题及答案

ACM试题及答案


中国石油大学华东 ACM 试题(黄色高亮为答案) 问题 A: A + B Problem 题目描述 给定两个整数 a, b,求两个数之和。 输入 输入仅有一行,两个整数 a, b (0<=a, b<=10). 输出 输出 a+b 的值。 样例输入 12 样例输出 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 use '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 programs 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。 除了题目要求,不允许输出额外的信息,例如“按任意键退出”、“请输入 n 的值:”等等。否 则将会得到 Wrong Answer。 请不要在程序结束时加上 system("pause")等调试信息。 同时, 你的程序不允许读取文件或输出到文件中,否则会得到 Runtime Error 或 Wrong Answer。 #include <stdio.h> int main() { int a,b; scanf("%d %d",&a,&b); printf("%d\n",a+b); return 0; } 问题 B: A + B Problem I 时间限制: 1 Sec 内存限制: 128 MB 提交: 2846 解决: 2191 [提交][状态][讨论版] 题目描述

给定两个整数 a, b,求两个数之和。 输入 输入数据有多行. 每行数据中含有两个整数 a, b (0<=a, b<=109). 如果对读取输入数据方式产生疑问,请参考 HINT。 输出 对每行数据,输出对应 a+b 的值。 样例输入 123 500 60 80 70 90 样例输出 623 140 160 提示 与 Problem 1000 不同的是,本题的输入数据要求以 EOF 作结尾。 EOF 即 End of File,可以表示文件结尾,也可以表示标准输入的结尾。 在 ACM 竞赛中,评测采用标准输入输出。当题目中提示“输入以 EOF 为结束”,或未指明数 据组数时,往往无法将数据一次性读入存入数组中,经过计算后再输出。在这种情况下,可 以采用以下方式读取数据: 下面给出本题 C 语言代码示例。 #include <stdio.h> int main() { int a,b; while(scanf("%d %d",&a, &b)!=EOF) // 输入结束时,scanf 函数返回值为 EOF,即没有数 据输入时则退出 while 循环 { printf("%d\n",a+b); } return 0; } 您可参考上面给出的示例程序完成本题。

当您在本机上测试时, 如果采用标准输入, 需要在输入数据结束后手动输入 EOF。 在 Windows 下,按下 Ctrl-Z,在 Linux 下,按下 Ctrl-D 即可。如果采用从文件读入(或重定向输入输出流 到文件) ,则不必在文件结尾添加其他字符。但请注意,在提交代码前请将 freopen、fopen 等语句注释或删除。 #include <stdio.h> //EOF 方法,因为在在线评判中,所有输入都是用文件来模拟输入的,因此 EOF 方法成为了 一种常见方法 int main() { int a,b; while(scanf("%d %d",&a, &b)!=EOF) { printf("%d\n",a+b); } return 0; }

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

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

} return 0; } 示例 3:使用 for 循环,将数据存入数组后再处理。当 T 较大时,不建议采取此种方法

#include <stdio.h> int main() { int T, a[1010], b[1010], i; scanf("%d",&T); for(int i=0; i<T; i++) { scanf("%d%d", &a[i], &b[i]); } for(int i=0; i<T; i++) { printf("%d\n",a[i]+b[i]); } return 0; } #include <stdio.h> //这是典型的计数法,根据给定数值决定输入数量 //方法 1 int main() {

int ls,a,b,i; scanf("%d",&ls); for (i = 0; i < ls; i++) { scanf("%d %d", &a, &b); printf("%d\n",a+b); } return 0; } //方法二 int main() { int ls,a,b,i; scanf("%d",&ls); while (ls--)//利用整数和逻辑类型之间的对应关系 { scanf("%d %d", &a, &b); printf("%d\n",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 500 60 80 70 90 00 样例输出 623

140 160 提示 与 Problem 1001 相似,本题的输入数据组数未知,但给出了 0 0 作为输入的结束符。您可以 据此编制程序。 (提示:判断 a、b 的值是否全为 0) 题目描述 给定一些整数,对他们求和。 输入 输入数据有多行。 每行数据中第一个整数 N (0<=N<=100),后面跟着 N 个整数 ai (-1000<=ai<=1000) 最后一行数据是 0,标志着输入结束。0 一行本身不需要计算输出。 输出 对每一行 N 个正整数 ai 求和并输出。 样例输入 41234 512345 0 样例输出 10 15 #include <stdio.h> //这种输入被称为哨兵法,选择一个特定的值作为结束标记,也就是一个哨兵,防止你超出 范围。在这个题目中的哨兵就是 0 //方法 1(推荐方法) int main() { int a,b; while(1) { scanf("%d %d",&a, &b); if (a == 0 && b == 0) break; printf("%d\n",a+b); } return 0; } //方法 2 int main() { int a,b; scanf("%d %d",&a, &b);//先读一次

while(a != 0 || b != 0) { printf("%d\n",a+b); scanf("%d %d",&a, &b); } return 0; } //方法 3 int main() { int a,b; do { scanf("%d %d",&a, &b); if (a == 0 && b == 0) break; printf("%d\n",a+b); }while(a != 0 || b != 0); return 0; } //方法 4 int main() { int a,b; while(scanf("%d %d",&a, &b),a != 0 || b != 0)//利用逗号表达式,逗号表达式从左向右计 算,它的返回结果是最后一个表达式的结果 printf("%d\n",a+b); return 0; } 问题 E: A + B Problem IV 题目描述 给定一些整数,对他们求和。 输入 输入数据有多行。 每行数据中第一个整数 N (0<=N<=100),后面跟着 N 个整数 ai (-1000<=ai<=1000) 最后一行数据是 0,标志着输入结束。0 一行本身不需要计算输出。 输出 对每一行 N 个正整数 ai 求和并输出。 样例输入 41234 512345

0 样例输出 10 15 #include <stdio.h> //哨兵法和计数法的复合输入 int main() { int num,sum,tmp,i; while (scanf("%d",&num),num!=0) { sum = 0; while(num--) { scanf("%d",&tmp); sum += tmp; } printf("%d\n",sum); } } 问题 F: A + B Problem V 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 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. 样例输入 2 41234 512345 样例输出 10 15 #include <stdio.h> //计数法和计数法的复合 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("%d\n",sum); } return 0; } 问题 G: A + B Problem VI 时间限制: 1 Sec 内存限制: 128 MB 题目描述 Your task is to calculate 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. 样例输入 41234 512345 #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("%d\n",sum); } return 0; } 问题 H: A + B Problem VII 题目描述 Your task is to Calculate a + 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. 样例输入 15 10 20 样例输出 6 30 #include <stdio.h> int main() { int a,b; while(scanf("%d %d",&a,&b)!=EOF) { printf("%d\n\n",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 then 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. 样例输入 3 41234 512345 3123 样例输出 10 15 6 #include <stdio.h> //计数法和计数法的复合 int main() { int num,num2,sum,tmp,i,j; scanf("%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("%d\n\n",sum); } return 0; }

China University of Petroleum 主页 讨论版 问题 状态 排名 9 竞赛&作业 名校联赛 常见问答 [划词翻译 开启] 修改帐号 1503030406 (0) Recent 注销 “端点杯”2015 年中国石油大学新生赛敬请关注! China University of Petroleum Online Judge FAQ Q:这个在线裁判系统使用什么样的编译器和编译选项? 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_JUDGE C++: g++ Main.cc -o Main -fno-asm -O2 -Wall -lm --static -DONLINE_JUDGE Pascal: fpc Main.pas -oMain -O1 -Co -Cr -Ct -Ci Java: 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.5 glibc 2.3.6 Free Pascal Compiler version 2.4.0-2 [2010/03/06] for i386 java version "1.6.0_22" Q:程序怎样取得输入、进行输出? A: 你的程序应该从标准输入 stdin('Standard Input') 获取输出 并将结果输出到标准输出 stdout('Standard Output').例如,在 C 语言可以使用 'scanf' ,在 C++可以使用'cin' 进行输入; 在 C 使用 'printf' ,在 C++使用'cout'进行输出. 用户程序不允许直接读写文件, 如果这样做可能会判为运行时错误 "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("%d\n",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 Main{ public static void main(String args[]){ Scanner cin = new Scanner(System.in); int a, b; while (cin.hasNext()){ a = cin.nextInt(); b = cin.nextInt(); System.out.println(a + b); } } } Q:为什么我的程序在自己的电脑上正常编译,而系统告诉我编译错误! A:GCC 的编译标准与 VC6 有些不同,更加符合 c/c++标准: main 函数必须返回 int, void main 的函数声明会报编译错误。 i 在循环外失去定义 "for(int i=0...){...}" itoa 不是 ansi 标准函数. __int64 不是 ANSI 标准定义,只能在 VC 使用, 但是可以使用 long long 声明 64 位整数。 如果用了__int64,试试提交前加一句#define __int64 long long Q:系统返回信息都是什么意思? A:详见下述: Pending : 系统忙,你的答案在排队等待. Pending Rejudge: 因为数据更新或其他原因,系统将重新判你的答案. Compiling : 正在编译. Running & Judging: 正在运行和判断. Accepted : 程序通过! Presentation Error : 答案基本正确,但是格式不对。

Wrong Answer : 答案不对,仅仅通过样例数据的测试并不一定是正确答案,一定还有你没 想到的地方. Time Limit Exceeded : 运行超出时间限制,检查下是否有死循环,或者应该有更快的计算方 法。 Memory Limit Exceeded : 超出内存限制,数据可能需要压缩,检查内存是否有泄露。 Output Limit Exceeded: 输出超过限制,你的输出比正确答案长了两倍. Runtime Error : 运行时错误, 非法的内存访问, 数组越界, 指针漂移, 调用禁用的系统函数。 请点击后获得详细输出。 Compile Error : 编译错误,请点击后获得编译器的详细输出。 Q:如何参加在线比赛? A:注册 一个帐号,然后就可以练习,点击比赛列表 Contests 可以看到正在进行的比赛并参 加。 其他问题请访问 China University of Petroleum 论坛系统


更多相关文档:

ACM试题及答案

ACM试题及答案_其它_高等教育_教育专区。中国石油大学华东 ACM 试题(黄色高亮为答案) 问题 A: A + B Problem 题目描述 给定两个整数 a, b,求两个数之和。...

2011年ACM大赛真题试题

每当一个文档中含有字典中不存 在的单词时,ACM 就会试图用字典中与该单词最...路线上最高高度为 3, 最低高度为 0,所以答案为 3。当然,最佳路线可能不止...

ACM试题及其答案1

ACM试题及其答案1_理学_高等教育_教育专区。ACM试题及答案猪的安家 Andy 和 Mary 养了很多猪。他们想要给猪安家。但是 Andy 没有足够的猪圈,很多猪只能够 在一...

整理出ACM所有题目及答案_图文

整理出ACM所有题目及答案_高中作文_高中教育_教育专区 暂无评价|0人阅读|0次下载|举报文档整理出ACM所有题目及答案_高中作文_高中教育_教育专区。1000 Problem ...

ACM试题及答案2

ACM试题及答案2_理学_高等教育_教育专区。ACM试题及答案2砝码问题 Problem 有一组砝码,重量互不相等,分别为 m1、m2、m3??mn;它们可取的最大数量分别为 x1、 ...

杭电ACM部分题目答案

("NO\n"); } } } 2040 亲和数 Problem Description 古希腊数学家毕达哥拉...杭电ACM试题答案 4页 免费 杭电acm部分答案 33页 1下载券 杭电acm部分答案...

杭电ACM试题答案

杭电ACM试题答案_自然科学_专业资料。1000题和1001题和1002题的答案 【杭电 ACM1000】 A + B Problem Problem Description Calculate A + B. Input Each line ...

acm编程比赛入门题目集

acm编程比赛入门题目集_计算机软件及应用_IT/计算机_专业资料。最少钱币数:【...每行输出一个答案 【样例输入】 1101 【样例输出】 8 蛇行矩阵【问题描述】 ...

南洋理工acm题目与答案

南洋理工acm题目与答案_IT认证_资格考试/认证_教育专区。南洋理工acm题目与答案今日推荐 88份文档 2014全国高考状元联手分享状元笔记 ...

acm编程比赛入门题目集

acm编程比赛入门题目集_计算机软件及应用_IT/计算机_专业资料。程序设计比赛试题...每行输出一个答案 【样例输入】 1101 【样例输出】 8 蛇行矩阵【问题描述】 ...
更多相关标签:
网站地图

文档资料共享网 nexoncn.com copyright ©right 2010-2020。
文档资料共享网内容来自网络,如有侵犯请联系客服。email:zhit325@126.com