POJ数据的输入输出格式
POJ在评阅习题时需要向程序提供输入数据,并获取程序的输出结果。因此提交的程序需按照每个习题具体的输入输出格式要求处理输入输出。有的时候,测评系统给出程序的评判结果是“数据错误”或“结果错误”,有可能就与没有正确使用输入输出格式有关。
POJ要求的输出一般有3种情况。
(1)输出一个数据:数据后加换行。
(2)输出一行数据:数据间用一个空格间隔(或指定的间隔符),行尾加换行(换行前可有一个空格)。
(3)输出多行数据:每行的数据间用一个空格间隔(或指定的间隔符),行尾只加换行。
除了少数题目没有输入数据的要求外(例如POJ 1316 Self Numbers),POJ的题目一般要求处理多组测试数据,其数据输入形式一般有如下2种情况。
1.给定测试数据的组数
测试数据为多行。第一行是测试数据的数目t。以下的t行给出待处理的数据。针对这种输入情况,程序的框架一般为:
cin>>nCase;
while (nCase--)
{
// 按要求输入每组测试数据并进行处理
}
【例1】Eva's Problem (POJ 1658)
Description
Eva的家庭作业里有很多数列填空练习。填空练习的要求是:已知数列的前四项,填出第五项。因为已经知道这些数列只可能是等差或等比数列,她决定写一个程序来完成这些练习。
Input
第一行是数列的数目t(0 <= t <= 20)。以下每行均包含四个整数,表示数列的前四项。约定数列的前五项均为不大于10^5的自然数,等比数列的比值也是自然数。
Output
对输入的每个数列,输出它的前五项。
Sample Input
2
1 2 3 4
1 2 4 8
Sample Output
1 2 3 4 5
1 2 4 8 16
(1)编程思路。
简单地采用a、b、c、d、e五个变量来保存数列的前5项。输入前4项后,若b-a == c-b && c-b==d-c,则数列为等差数列,e= d + c-b;否则,数列为等比数列,e = c*d/b。
(2)源程序。
#include <iostream>
using namespace std;
int main()
{
int t, a,b,c,d,e;
cin >> t;
while (t--)
{
cin >> a >> b >> c >> d;
if (b-a == c-b && c-b==d-c)
{
e = d + c-b;
cout<<a<<" "<<b<<" "<<c<<" "<<d<<" "<<e<<endl;
}
else
{
e = c*d/b;
cout<<a<<" "<<b<<" "<<c<<" "<<d<<" "<<e<<endl;
}
}
return 0;
}
当然,有的POJ题目中要求处理的测试数据就只有一组,例如POJ 1077 Eight。这种情况,直接按要求输入测试数据,进行处理即可。
2.以特定的数据结束输入。
输入包含多组测试数据。每组测试数据占据独立一行。以特定的数据(比如0,或者一个负数)表示输入结束。针对这种输入情况,以每组测试为1个数,且以0作为结束为例,程序的框架一般为:
while (cin>>n && n!=0)
{
// 按要求输入每组测试数据并进行处理
}
【例2】Sum of Factorials (POJ 1775)
Description
John von Neumann, b. Dec. 28, 1903, d. Feb. 8, 1957, was a Hungarian-American mathematician who made important contributions to the foundations of mathematics, logic, quantum physics,meteorology, science, computers, and game theory. He was noted for a phenomenal memory and the speed with which he absorbed ideas and solved problems. In 1925 he received a B.S. diploma in chemical engineering from Zurich Institute and in 1926 a Ph.D. in mathematics from the University of Budapest. His Ph.D. dissertation on set theory was an important contribution to the subject. At the age of 20, von Neumann proposed a new definition of ordinal numbers that was universally adopted. While still in his twenties, he made many contributions in both pure and applied mathematics that established him as a mathematician of unusual depth. His Mathematical Foundations of Quantum Mechanics (1932) built a solid framework for the new scientific discipline. During this time he also proved the mini-max theorem of GAME THEORY. He gradually expanded his work in game theory, and with coauthor Oskar Morgenstern he wrote Theory of Games and Economic Behavior (1944).
There are some numbers which can be expressed by the sum of factorials. For example 9,9=1!+2!+3! Dr. von Neumann was very interested in such numbers. So, he gives you a number n, and wants you to tell him whether or not the number can be expressed by the sum of some factorials.
Well, it's just a piece of cake. For a given n, you'll check if there are some xi, and let n equal to Σ1<=i<=txi!. (t >=1 1, xi >= 0, xi = xj iff. i = j). If the answer is yes, say "YES"; otherwise, print out "NO".
Input
You will get several non-negative integer n (n <= 1,000,000) from input file. Each one is in a line by itself.
The input is terminated by a line with a negative integer.
Output
For each n, you should print exactly one word ("YES" or "NO") in a single line. No extra spaces are allowed.
Sample Input
9
-1
Sample Output
YES
(1)编程思路。
由于题目要求处理的数据范围为n <= 1,000,000,而10!=3628800>1000000,因此,可以定义一个数组int table[11]预先保存好0!~10!的值。
针对每个输入的测试数据n,用循环
for (i =10; i>=0; i--)
if (table[i]<=n) n=n-table[i];
进行处理,若n==0,则n可以表示为几个数的阶乘和,输出“YES”。
(2)源程序。
#include <iostream>
using namespace std;
int main()
{
int n,i;
int table[11]={1,1,2,6,24,120,720,5040,40320,362880,3628800};
while (cin>>n && n>=0)
{
if(n == 0)
{
cout<<"NO"<<endl;
continue;
}
for (i =10; i>=0; i--)
{
if (table[i]<=n) n=n-table[i];
if (n==0) break;
}
if (i>=0) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return 0;
}
POJ数据的输入输出格式的更多相关文章
- [ACM训练] ACM中巧用文件的输入输出来改写acm程序的输入输出 + ACM中八大输入输出格式
ACM中巧用文件的输入输出来改写acm程序的输入输出 经常有见大神们使用文件来代替ACM程序中的IO,尤其是当程序IO比较复杂时,可以使自己能够更专注于代码的测试,而不是怎样敲输入. C/C++代码中 ...
- 【C语言入门教程】3.2 数据的输入 与 输出
在程序的运行过程中,通常需要用户输入一些数据,而程序运算所得到的计算结果等又需要输出给用户,由此实现人与计算机之间的交互.所以在程序设计中,输入输出语句是一类必不可少的重要语句.在 C 语言中,没有专 ...
- C语言第一次作业——输入输出格式
题目1温度转换 本题要求编写程序,计算华氏温度150°F对应的摄氏温度.计算公式:C=5×(F−32)/9,式中:C表示摄氏温度,F表示华氏温度,输出数据要求为整型. 1.实验代码 #include& ...
- hdu ACM Steps Section 1 花式A+B 输入输出格式
acm与oi很大的一个不同就是在输入格式上.oi往往是单组数据,而acm往往是多组数据,而且题目对数据格式往往各有要求,这8道a+b(吐槽..)涉及到了大量的常用的输入输出格式.https://wen ...
- Hadoop(七):自定义输入输出格式
MR输入格式概述 数据输入格式 InputFormat. 用于描述MR作业的数据输入规范. 输入格式在MR框架中的作用: 文件进行分块(split),1个块就是1个Mapper任务. 从输入分块中将数 ...
- Hadoop学习之常用输入输出格式总结
目的 总结一下常用的输入输出格式. 输入格式 Hadoop可以处理很多不同种类的输入格式,从一般的文本文件到数据库. 开局一张UML类图,涵盖常用InputFormat类的继承关系与各自的重要方法(已 ...
- C语言输入输出格式符
C语言输入输出格式符 printf函数(格式输出函数) 1.一般格式 printf(格式控制,输出表列) 例如:printf("i=%d,ch=%c\n",i,ch); 说明: ( ...
- PAT IO-04 混合类型数据格式化输入(5)
/* *PAT IO-04 混合类型数据格式化输入(5) *2015-08-01 作者:flx413 */ #include<stdio.h> int main() { int a; fl ...
- IO-04. 混合类型数据格式化输入
/** *A4-IO-04. 混合类型数据格式化输入 *C语言实现 *测试已通过 */ #include "stdio.h" int main() { float m1,m2; i ...
随机推荐
- YTU 2955: A改错题--销售部的打印机
2955: A改错题--销售部的打印机 时间限制: 1 Sec 内存限制: 128 MB 提交: 61 解决: 47 题目描述 销售部新进了一台快速打印机,使用频率很高.为了能够对打印情况进行统计 ...
- SimpliciTI协议栈
SimpliciTI组网过程介绍 1.SimpliciTI支持点对点和星形的网络拓扑结构. 下面介绍以AP为中心的SimpliciTI网路协议的星形拓扑结构通信过程 1)当ED节点上电之后就扫描信 ...
- gerrit调试
- Gym 100962J Jimi Hendrix (树形DP)
题意:给定一棵树,然后每条边有一个字母,然后给定一行字符串,问你能不能从这棵树上找到,并输出两个端点. 析:树形DP,先进行递归到叶子结点,然后再回溯,在回溯的时候要四个值,一个是正着匹配的长度和端点 ...
- 3 Java对象的内存布局以及对象的访问定位
先来看看Java对象在内存中的布局 一 Java对象的内存布局 在HotSpot虚拟机中,对象在内存中的布局分为3个区域 对象头(Header) Mark Word(在32bit和64bit虚拟机 ...
- 工作日记:C#获取操作系统、MAC地址、登录用户、网卡、物理内存信息
/// <summary> /// 操作系统的登录用户名 /// </summary> /// <returns>系统的登录用户名</returns> ...
- 51nod 1239 欧拉函数之和【欧拉函数+杜教筛】
和bzoj 3944比较像,但是时间卡的更死 设\( f(n)=\sum_{d|n}\phi(d) g(n)=\sum_{i=1}^{n}f(i) s(n)=\sum_{i=1}^{n}\phi(i) ...
- nc的基本用法
nc(netcat) 被誉为网络安全界的‘瑞士军刀’,可以用于完成几乎涉及TCP.UDP或者Unix域套接字的任何事.它可以打开TCP连接,发送UDP报文,在任意的TCP和UDP端口监听,进行端口扫描 ...
- NOIp 2010/Luogu P1525 关押罪犯 【二分图/并查集】 By cellur925
题目传送门 感想:相信自己的想法!继续挖掘! 读完题目后:看到的最大值最小?二分答案啊!再仔细一看:wi达到了1e9,二分可能费点劲.(其实真的是可以的)而且check函数貌似并没有什么行之有效的写法 ...
- django 第一个项目测试
我们安装好Django以后就可以使用Django命令来创建项目了 1.Django 创建第一个项目 安装 Django 之后,您现在应该已经有了可用的管理工具 django-admin.py.我们可以 ...