`
cscoder
  • 浏览: 15903 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

OJ系统(ACM/NOI)基本输入输出教程

阅读更多

在介绍OJ系统之前,首先为大家介绍一下ACM:

ACM原代表美国计算机协会,因其举办的ICPC即国际大学生程序设计竞赛而闻名全世界,此项赛事要求学生的在五小时内解决全英文问题,并在效率和速度以及代码的审查上要求非常严格以至近乎苛刻,被誉为是计算机界的“奥林匹克”。在大学中,因其含金量、认可度等非常之高,故而在大学生名企就业、保研、留学等方面都有着极大的帮助。ACM也因其独有的比赛趣味也在今天的高校中也得到了广泛的推广,许多大学生都为之着迷、甚至大学四年都为之献身。足以说明ACM的魅力所在。

OJ简介:

ACM比赛中主要以OJ(即Online Judge)判题为主,用来在线检测程序的正确性。OJ采用后台黑箱测试,测试数据非常全面,涵盖各种特殊情况。并且在结果的比对上也不放过一个空格和回车,这就要求程序员要有非常严谨的思维。著名的OJ有POJ、HOJ、UVA等。

轻量级入门OJ ACM训练平台www.clang.cc

在各大OJ的ACM比赛赛题上,往往都会给出问题的描述(Description)、问题的输入和输出要求,并会给出几组样例数据。所以选手要在完全理解的基础上至少通过了样例数据才再提交代码。

下面我们介绍几种常见的输入输出格式。

A+B Ⅰ

这种输入的典型题目就是A+Bhttp://www.clang.cc/oj/problem.php?id=1085

此题只要求用户求A+B的和,但此类题目往往说明测试数据有多组。则默认是到文件(后台测试用例在文件里)末尾结束。我们则可以采用循环的方式不断接收测试用例,并且每接收一组输出一组(不必全部输入再全部输出,因为OJ只比对一次最后的结果)。

参考C代码:

#include<stdio.h>
int main()
{
	int a,b;
	while(scanf(“%d%d”,&a,&b)==2)  //利用scanf的返回值
	{
		printf(“%d\n”,a+b);
	}
    return 0;
}

A+BⅡ

依然是A+B,我们可以看一下这道题http://www.clang.cc/oj/problem.php?id=1086

依然是求A+B,但它的输入数据为:

2

1 5

10 20

输出为:

6

20

此题相比第一道而言,会提前告诉你是几组数据,第一行的2就表示有两组数据。则此时我们可以考虑这样写:

#include<stdio.h>
int main()
{
	int n;
	int a,b;
	scanf("%d",&n);
	while(n--)
	{
		scanf("%d%d",&a,&b);
		printf("%d\n",a+b);
	}
	return 0;
}


A+B Ⅲ

继续是A+B,不同的是题目中说明,有多组数据,但是以A和B都为0时结束,则此时,就要做判断。不能依然输出0。

http://www.clang.cc/oj/problem.php?id=1087

参考答案:

#include<stdio.h>
int main()
{
	int a,b;
	while(scanf("%d%d",&a,&b)==2) 
	{
		if(a== 0 && b==0)
			break;
		printf("%d\n",a+b);
	}
	return 0;
}


A+B Ⅳ

题目描述:此类题目是求n个数的和,输入为先输入一个数组n,然后后面跟n个数字,求这n个数字的和。同样有多组数据,当n=0时结束。题目链接http://www.clang.cc/oj/problem.php?id=1088

样例输入:

4 1 2 3 4

5 1 2 3 4 5

0

样例输出:

10

15

参考写法:

#include<stdio.h>
int main()
{
	int n;
	int sum,temp;
	while(scanf("%d",&n) && n)
	{
		sum=0;
		while(n--)
		{
			scanf("%d",&temp);
			sum+=temp;
		}
		printf("%d\n",sum);
	}
	return 0;
}


总结:

常见的ACM的输入输出格式如这些。

多组数据可能还会用到EOF、NULL这些宏。比如scanf、getchar、gets的返回值。

万变不离其宗,有些题目可能是这些格式的组合,亦或者是个别情况的变种,比如输出格式要求的变化等等,就需要各位ACMer灵活多变了。

分享到:
评论

相关推荐

    算法题单-适用ACM、NOI、NOIP训练

    资源名称:算法题单-适用ACM、NOI、NOIP训练 内容概要:ACM 训练题单,从0到1,涵盖各大OJ平台,有大量题目可供针对性练习。 适用人群:ACM、NOI、NOIP、算法爱好者。 目标:提高算法能力,比赛争金夺银。

    ACM NOI CSP比赛的一些经验

    在ACM NOI CSP(中国计算机学会的青少年信息学奥林匹克竞赛)比赛中,参赛者们需要具备扎实的编程基础、算法理解能力和快速解决问题的技巧。这里,我们根据提供的标题和描述,结合可能包含在“ACM NOI CSP比赛的一些...

    ACM NOI CSP比赛经验分享.docx

    ### ACM NOI CSP比赛经验分享 #### 一、基本功训练 **数据结构与算法** - **数据结构**:为了在...通过以上系统的训练和准备,结合良好的心态调整,相信每位参赛者都能在ACM、NOI、CSP等编程竞赛中取得理想的成绩。

    NOI2012年第一天

    NOI2012年第一场题目+数据,导入hustoj可用

    编程比赛三大赛制介绍(ACM赛制、OI赛制、IOI赛制)-2020.11.07.pdf

    编程比赛有三种主要的赛制,分别是ACM赛制、OI赛制和IOI赛制。这三种赛制在组织和评分方式上各有特点,广泛应用于各类编程竞赛中。 首先,ACM赛制,全称为国际大学生程序设计竞赛(ACM International Collegiate ...

    剪绳子leetcode-Online-Judge-Solutions:日常在线判断解决方案

    NOI 2001 18/09/17 OJ1494 虫虫特工队 联合查找 18/10/12 LC307 范围总和查询 - 可变 二叉索引树 18/10/13 OJ197 手机 二叉索引树 IOI 2001 18/10/13 OJ3532 苹果树 二叉索引树 18/10/13 OJ17817 硬LIS 二叉索引树 ...

    NOIWC 课件 下一代测评系统 完整版

    ### 下一代测评系统的核心知识点 #### 一、测评系统的定义及其重要性 测评系统,在编程竞赛领域中,是指用于评估程序正确性、运行效率以及内存使用情况等多方面性能的软件平台。它对于确保竞赛结果的公正性和准确...

    码学堂考试系统-V5-setup.zip

    码学堂考试系统-V5-setup.zip 是一款专门针对中小学信息学教育和竞赛的在线测评系统。这个压缩包包含的核心文件是 "码学堂考试系统-V5-setup.exe",这通常是一个安装程序,用户可以通过运行该文件来在本地计算机上...

    编程较好的刷题网站.docx

    6. **杭电OJ**: 浙江大学杭州电子科技大学的在线判题系统提供了大量编程题目,对于初学者和进阶者都是一个不错的选择。这里的题目覆盖面广,适合逐步提升编程技能。 7. **NOI OpenJudge**: NOI OpenJudge是中国青...

    leetcodeoj调试-LeetCodeNoteBook:leetcode新生指南

    POJ,ZOJ这类面向ACM和NOI竞赛的Online Judge有很多,那为什么要选择leetcode呢?我个人认为这些OJ间的差异不大,最重要的是能够有所收获就好。leetcode最大的特点就是只要有网络+浏览器就可以随时随地刷题或者调试...

    bzoj测试数据118题数据

    八中OJ,又简作BZOJ,以原题巨多而著称,该数据为BZOJ上的1000-1109和1130-1139的测试数据节点,没有题目,有需要题目的可以到https://hydro.ac/d/bzoj/p网站查找对应的题目。

Global site tag (gtag.js) - Google Analytics