2015年SeedCoder比赛形式与往年不太一样,决赛采用online judge放题和计分,这样使评分更加客观。
考虑到大多数同学不太熟悉oj 系统,有需要的同学可以参考一下关于浙江大学onlinejudge 的介绍,网址http://acm.zju.edu.cn/onlinejudge/faq.do
下面以判断一个整数是否为质数为例,给大家讲解一下怎样使用示例代码。
【问题】
判断一个整数n是否为质数。
【输入】
输入由一系列的整数构成,每一个整数以Tab键隔开
【输出】
如果n为质数,则输出为true,否则为false;结果以Tab键隔开,每隔5个值换行。
【示例输入】
5 14
【示例输出】
true false
【示例代码】
//--------------------------------------【程序说明】-------------------------------------------
// 程序说明:是否为质数
// 程序描述:
// IDE版本:Visual Studio 2013
// 作者:Arthur Lee
//------------------------------------------------------------------------------------------------
#include <fstream>//包含输入文件流ifstream,输出文件流ofstream
#include <ctime>//包含clock()函数
#include <cmath>
using namespace std;//
#define TIMER
//函数声明
bool IsPrime(int n);
int main(){
#ifdef TIMER
clock_t start = clock();//单位为ms。
#endif // TIMER
ifstream fin("in.txt");
if (fin.fail())
return 1;
ofstream fout("out.txt");
int test;
while (!fin.eof())//文件未读完时一直执行
{
fin >> test;
if (IsPrime(test))
fout << test << "\t" << "is a Prime" << "\n";
else
fout << test << "\t" << "is not a Prime" << "\n";
}
#ifdef TIMER
clock_t end = clock();
double duration = (double)(end - start);
fout << "runtime : " << duration << "ms" << endl;
#endif // TIMER
fout.close();
return 0;
}
//函数实现
//n为质数时,返回true
bool IsPrime(int n){
//这里未对n<=0 做判断处理
if (n == 1)
return false;
int i = 2;
for (; i <= (int)sqrt(n); ++i)
{
if (n%i == 0)
break;
}
if (i <= (int)sqrt(n))
return false;
else
return true;
}
这里有几点需要提醒一下大家:
1. 示例代码没有完全按照题目要求格式输出,你们可以对输出格式进行修改以达到题目的要求。
2. 热身练习题没有oj系统提供输入和输出检测。因此我们只能在源文件的根目录新建in.txt输入样例,和新建out.txt输出结果,再对结果进行判断。
3. 示例代码中包含了TIMER宏,这主要是为了之后方便比较不同算法的性能,不需要的话可以直接注释#defineTIMER,不会对逻辑产生任何影响。
4. 编程规范问题,请大家按照示例样例的格式,进行书写代码。必须包含文件注释,其中程序说明栏写上题目,编程平台栏写上开发环境,作者写上组员姓名。
5. 另外,示例代码有些风格问题,可能还存在一些小错误,时间可能非最优,还请大家海量。如果你有更好的解决方案,可以联系我(arthur_lee_92@hotmail.com)。更重要的希望这些热身题能对你们有些帮助,能产生一些价值。
接下来简要介绍一下如何使用提供的示例:
1. 打开Visual Studio 2013, [File] → [New] → [Project] → [Visual C++ Empty Project],在弹出对话框内写上项目名字。(小组名或姓名+题目)
2. [Project] → [Add New Item],在弹出对话框中选择Visual C++ cpp文件。重复以上操作,添加in.txt和out.txt文件。
3. 将示例代码复制到Source.cpp文件中,输入示例复制到in.txt中(或按照题目要求自定义输入),按下F5。out.txt便会生成输出,可以点击查看。
最后的最后附上一份示例模板,你们可以直接在上面修改,避免重复劳动。
示例模板:
//--------------------------------------【程序说明】-------------------------------------------
// 程序说明:
// 程序描述:
// IDE版本:Visual Studio 2013
// 作者:[成员名字,或小组名字]
//------------------------------------------------------------------------------------------------
//【1】头文件
#include <fstream>
#include <ctime>
using namespace std;
#define TIMER
//【2】函数声明
//【3】定义枚举体,在几种方法中切换
enum Method
{
};
//【4】变量声明
int main(){
#ifdef TIMER
clock_t start = clock();
#endif // TIMER
ifstream fin("in.txt");
if (fin.fail())
return 1;
ofstream fout("out.txt");
while (!fin.eof())
{
}
#ifdef TIMER
clock_t end = clock();
double duration = (double)(end - start);
fout << "runtime : " << duration << "ms" << endl;
#endif // TIMER
fout.close();
return 0;
}
//【5】函数实现