编程题考试须知

编程题注意事项:(输入输出教程:https://discuss.acmcoder.com/topic/5d47dfa8b99ad44605a1700b)
1. 本Online Judge系统是构建在Ubuntu 14.04 64位操作系统之上,所有文件名对大小写敏感,在c/c++引用头文件时尤其需要注意
2. 请不要自行输出提示信息,例如:printf("Please input two numbers: ")、raw_input('Please input two numbers: ')等等,这将会导致您的答案不正确,因为任何的输出到屏幕都会作为您答案的一部分
3. Python使用的是2.7&3两个版本,缩进可以使用tab、4个空格或2个空格,但是只能任选其中一种,不能多种混用;
4. 本系统支持Java、Clang++、Clang、C++、C、PHP、C#、Python 2/3、JavaScript、Ruby、Bash、Obj-C、Lua、Go、R、SQL和Hadoop语言;
5. 使用Java语言请注意,不要自定义包名称,否则会报错,即不要添加package answer之类的语句;您可以写很多个类,但是必须有一个类名为Main,并且为public属性,并且Main为唯一的public class,Main类的里面必须包含一个名字为'main'的静态方法(函数),这个方法是程序的入口。(具体可参见“编程样题”);
6. 您的程序只能从标准输入(stdin,即“键盘”)读入,并输出到标准输出(stdout,即“屏幕”),不允许操作文件,否则将导致不正确的结果。请不要引用不必要的头文件或命名空间;
Python特别说明:如果使用sys.stdin.readline,因为默认会带换行符,所以要strip('\n')进行截取;建议使用raw_input();
7. 使用JavaScript(Google V8 Engine(6.2.340))语言请注意:作答时不要进行DOM相关操作;
  • 读取size个字符:gets(size)
    将读取至多size个字符,当还未达到size个时如果遇到回车或结束符,会提前结束。回车符可能会包含在返回值中。
  • 输出信息:printsth(sth, ...)
    往控制台输出sth,当有多个参数时,空格分隔;最后加回车。
  • 输出一行:print(sth, ...) console.error(sth, ...) console.debug(sth, ...) console.info(sth, ...) console.log(sth, ...)
    往控制台输出sth,当有多个参数时,空格分隔;最后加回车。
  • 读取一个(长)整数:readInt()
    从控制台读取一个(长)整数。
  • 读取一个浮点型:readDouble()
    从控制台读取一个浮点型。
  • 读取一行输入:read_line()
    将读取至多1024个字符,当还未达到1024个时如果遇到回车或结束符,提前结束。读取多行最简单的办法是while((line = read_line()) != '')。
      对js v8 shell读取有任何建设性意见,欢迎提出,可以git clone https://github.com/acmcodercom/v8/tree/forstdio_baseon_6.2.340/samples,欢迎star和fork、pr。
8. 使用Nodejs(v6.9.1)语言时请注意,请使用node-stdio模块进行输入输出,具体API见:https://www.npmjs.com/package/node-stdio,本地安装时需要node-gyp,当然,您也可以使用process.stdin、process.stdout或readline。
9. 系统对于每一道编程试题均提供实时评测结果(具体可参见“编程题评测结果说明”),您可在考试允许时间内多次提交您的代码以获得您所希望得到的结果,系统将以您的最后一次提交结果为准,但提交次数也将作为考试成绩的一部分。
10. 请严格依照题目描述中约定的输入输出数据规范,尤其参照试题所提供的样例,当然试题的样例输入/输出并不代表评测试题的全部数据。
11. Web编程题:javascript不支持ES6及以上。
12. Obj-C:NSArray、NSMutableArray等数组不支持中括号下标操作,需要使用addObject、objectAtIndex、replaceObjectAtIndex等进行操作。

SQL注意事项:
1、服务器采用的是SQLite3,不是MySQL、SQLServer或者Oracle;
2、SQLite3支持标准的SQL语法,具体见:https://www.sqlite.org/lang.html
3、SQLite3内置支持的有些列处理函数与其他数据库不同,具体见:https://www.sqlite.org/lang_corefunc.html


编译器版本说明
语言 编译器版本
JAVA语言 Javac 1.8.0_66
Java version "1.8.0_66"
Java(TM) SE Runtime Environment (build 1.8.0_66-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.66-b17, mixed mode)
Clang++/Clang语言 clang version 7.0.1 gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3)
C/C++语言 gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3)
PHP语言 PHP 5.5.9-1ubuntu4.14 (cli)
C#语言 Mono C# compiler version 3.2.8.0
Mono JIT compiler version 3.2.8 (Debian 3.2.8+dfsg-4ubuntu1.1)
Python语言 Python 2.7.6,Python 3.4.3
Javascript语言 Google V8 Engine(6.2.340)
Ruby语言 ruby 1.9.3p484 (2013-11-22 revision 43786) [x86_64-linux]
Bash语言 GNU bash, version 4.3.11(1)-release (x86_64-pc-linux-gnu)
Obj-C语言 clang+llvm-7.0.1-x86_64-linux-gnu-ubuntu-14.04 基于GNUstep
Swift语言 Swift version 4.2.3
Nodejs语言 v6.9.1
Lua语言 Lua 5.3.2
Go语言 go1.2.1 linux/amd64
R语言 R3.4.1
Sql语言 SQLite 3.29.0
Hadoop语言 Hadoop 2.9.0


编程题评测结果说明
评测结果 缩写 含义
Queuing QI 提交太多了, 您的提交正处于排队状态。
Compiling CP 您提交的代码正在被编译。
Running RN 您的程序正在运行。
Judging JG 我们正在检查您程序的输出是否正确。
Accepted AC 您的程序是正确的。
Presentation Error PE 您的程序输出有格式问题,请检查是否多了或者少了空格('?')、制表符('\t')或者换行符('\n')
Wrong Answer WA 您的程序输出结果错误。
Runtime Error RE 您的程序在运行时发生错误。
Time Limit Exceeded TLE 您的程序运行的时间已经超出了题目的时间限制。
Memory Limit Exceeded MLE 您的程序运行的内存已经超出了题目的内存限制。
Output Limit Exceeded OLE 您的程序还在运行,但是输出内容字符数已经超过正确答案的字符数,明显已经是错误的,不必再运行下去了。
Compilation Error CE 您的程序语法出现问题,编译器无法编译。
System Error SE 评判系统内部出现错误 ,我们会尽快处理。
Out Of Contest Time OCT 考试已经结束,不再评测提交。



样例题目及程序

A + B
描述

给予两个整数 a 和 b ,计算它们的和 a + b

输入

输入包含多组测试数据,每一行包含两个整数 a 和 b

输出

在一行中输出 a + b 的值

样例输入
1 2
3 4
5 6
样例输出
3
7
11
请选择语言(输入输出教程:https://discuss.acmcoder.com/topic/5d47dfa8b99ad44605a1700b)

  • C
  • C++
  • C#
  • Java
  • JS
  • Ruby
  • Bash
  • Obj-C
  • Swift
  • NodeJS
  • Lua
  • PHP
  • Python
  • Go
  • R
C 语言
#include <stdio.h>
int main()
{
   int a, b;
   while(scanf("%d%d", &a, &b) != EOF)
      printf("%d\n", a + b);
}
                            
C++ 语言
#include  <iostream> 
using namespace std;
int main()
{
    int a, b;
    while(cin>> a >> b)
    cout << a + b << endl;
    return 0;
}
                            
C# 语言
using System;
class Program {
    public static void Main() {
        string line;
        string []p;
        int a,b;
        while((line=Console.ReadLine())!=null){
            p=line.Split(' ');
            a=int.Parse(p[0]);b=int.Parse(p[1]);
            Console.WriteLine(a+b);
        }
    }
}
                            
Java 语言
//package main
//注意不要添加包名称,否则会报错。

import java.io.*;
import java.util.*;
class Test {
}
public class Main
{
    public static void main(String args[])
    {
        Scanner cin = new Scanner(System.in);
        int a, b;
        while(cin.hasNextInt())
        {
            a = cin.nextInt();
            b = cin.nextInt();
            System.out.println(a + b);
        }
    }
}
                            
JavaScript 语言
var a, b;
var solveMeFirst = (a,b) => a+b;
while((a=readInt())!=null && (b=readInt())!=null){
    let c = solveMeFirst(a, b);
    print(c);
}

或者:
var line;
var solveMeFirst = (a,b) => a+b;
while((line = read_line()) != ''){
    let arr = line.split(' ');
    let a = parseInt(arr[0]);
    let b = parseInt(arr[1]);
    let c = solveMeFirst(a, b);
    print(c);
}

                            
Ruby 语言
a=gets
while a != nil && a != "" && a != "\r" && a != "\n" do
    arr = a.split(" ")
    sum = 0
    arr.each_with_index do |value, index|
        sum = sum + value.to_i
    end
    puts sum.to_s
    a=gets
end
                            
Bash 语言
#!/bin/bash
 
read -a arr
#echo ${#arr[@]}
while [ ${#arr[@]} -eq 2 ]
do
sum=$((${arr[0]}+${arr[1]}))
echo "$sum"
read -a arr
done
                            
Obj-C 语言
#include <dispatch/dispatch.h>
#include <Block.h>
#include <stdio.h>
#include <stdbool.h>
 
#import <Foundation/Foundation.h>
 
int addab(NSMutableArray *array) {
  int a = [[array objectAtIndex:0] intValue];
  int b = [[array objectAtIndex:1] intValue];
  return a+b;
}
 
int main(void)
{
    @autoreleasepool {
        int a, b;
        while(scanf("%d %d",&a, &b) != EOF) {
            NSMutableArray *array = [NSMutableArray array];
            NSNumber *aa = [[NSNumber alloc] initWithInt:a];
            NSNumber *bb = [[NSNumber alloc] initWithInt:b];
            [array addObject:aa];
            [array addObject:bb];
            printf("%d\n", addab(array));
        }
    }
}

                            
Swift 语言
import Foundation

var ab = readLine() ?? "break"
while ab != "break"
{
  let array = ab.split(separator: " ")
  let a = Int(array[0])!
  let b = Int(array[1])!
  print(a+b)
  ab = readLine() ?? "break"
}
                            
NodeJS 语言
示例一(推荐):
var cmd = require('node-stdio')
var a, b;
var solveMeFirst = (a,b) => a+b;
while((a=cmd.readInt())!=null && (b=cmd.readInt())!=null){
    let c = solveMeFirst(a, b);
    cmd.print(c);
}

示例二(nodejs自带stdio):
process.stdin.resume();
process.stdin.setEncoding('utf-8');
 
var input = "";
var input_array = "";

//这里不灵活,需要全部读取数据后再处理,容易超内存。
process.stdin.on('data', function (data) {
    input += data;
});

var solveMeFirst = (a, b) => a+b;

process.stdin.on('end', function () {
    let arr = input.split("\n");
    for (var i=0; i<arr.length; i++) {
	    if (arr[i] != '') {
            input_array = arr[i].split(" ");
            
            let inline = 0;
            let res;
            let _a = parseInt(input_array[inline].trim(), 10);
            inline += 1;
        
            let _b = parseInt(input_array[inline].trim(), 10);
            inline += 1;
        
            res = solveMeFirst(_a, _b);
            process.stdout.write("" + res + "\n");
	    }
    }
});

示例三(nodejs自带readline):
var readline = require('readline');
process.stdin.setEncoding('utf-8');

var rl = readline.createInterface({input: process.stdin, output: process.stdout, prompt:''});
rl.prompt();

var solveMeFirst = (a, b) => a+b;

rl.on('line', function (data) {
    let arr = data.split(' ');
    if (arr && arr.length==2) {
        let c = solveMeFirst(+arr[0], +arr[1]);
        process.stdout.write('' + c + '\n');
    }
});
Lua 语言
local count = 0
function string.split(str, delimiter)
	if str==nil or str=='' or delimiter==nil then
		return nil
	end
	
    local result = {}
    for match in (str..delimiter):gmatch("(.-)"..delimiter) do
        table.insert(result, match)
    end
    return result
end
while true do
	local line = io.read()
	if line == nil or line == "" then break end
	local tb = string.split(line, " ")
	local sum = 0
	for i=1, #tb do
		local a = tonumber(tb[i])
		sum = sum+a
	end
	if count>0 then
		io.write("\n")
	end
	io.write(string.format("%d", sum))
	count = count+1
end
                
PHP 语言
< ?php
function solveMeFirst($a,$b){
    return $a + $b;
}
$handle = fopen ("php://stdin","r");
$s = fgets($handle);
while ($s != "") {
	$a = explode(" ", $s);
	$sum = solveMeFirst((int)$a[0],(int)$a[1]);
	print ($sum);
	print ("\n");
	$s = fgets($handle);
}
fclose($handle);
?>
Python语言
Python2:

#!/usr/bin/env python  
# coding=utf-8  
# Python使用的是2.7.6,缩进可以使用tab、4个空格或2个空格,但是只能任选其中一种,不能多种混用
while 1:
  a=[]  
  s = raw_input()
  # raw_input()里面不要有任何提示信息
  if s != "":
    for x in s.split():  
      a.append(int(x))  

    print sum(a)
  else:
    break

Python3:

#!/usr/bin/env python  
# coding=utf-8  
# Python使用的是3.4.3,缩进可以使用tab、4个空格或2个空格,但是只能任选其中一种,不能多种混用
while 1:
  a=[]  
  s = input()
  
  if s != "":
    for x in s.split():  
      a.append(int(x))  

    print(sum(a))
  else:
    break

Go 语言
package main
import "fmt"
import "io"
func main() {
  a:=0
  b:=0
  for {
    _, err := fmt.Scanf("%d%d",&a,&b)
    if err != nil {
        if err == io.EOF {
            break
        }
    } else {
		fmt.Printf("%d\n",a+b)
	}
  }
}
R 语言
con <- file("stdin", "r")  
a = readLines(con, n = 1)
b = readLines(con, n = 1)
while (a!="" && b!="") {
  c = as.numeric(a) + as.numeric(b)
  cat(format(c, scientific = FALSE))
  cat('\n')
  a = readLines(con, n = 1)
  b = readLines(con, n = 1)
}
close(con)
关于问题反馈
如果在考试时遇到任何问题,请通过考试页面的在线咨询小窗发消息给我们,或者发邮件到邮箱Exam@acmcoder.com,并注明您的姓名+手机+问题描述,我们会有相应的人员解答。