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 ...
随机推荐
- wpa_supplicant介绍【转】
本文转载自:https://zhuanlan.zhihu.com/p/24246712 一.什么是wpa_spplicant wpa_supplicant本是开源项目源码,被谷歌修改后加入Androi ...
- YTU 2553: 谁是赢家
2553: 谁是赢家 时间限制: 1 Sec 内存限制: 128 MB 提交: 94 解决: 25 题目描述 某一天,hcbbt等一群弱菜去tamara巨巨家里一起玩了一个卡牌游戏.巨 巨家里有2 ...
- 字符设备驱动另一种写法—mmap方法操作LED
最近在看韦老师的视频,讲解了很多种字符设备的驱动写法.经过自己的研究之后,我发现还有另外一种写法,直接在应用层操作,省去了内核中的地址映射部分,使得用户可以在应用层直接操作LED. mm ...
- IJ:目录
ylbtech-IJ:目录 1.返回顶部 2.返回顶部 3.返回顶部 4.返回顶部 5.返回顶部 6.返回顶部 7.返回顶部 8.返回顶部 9.返回顶部 10. ...
- mysqlnd cannot connect to MySQL 4.1+ using old authentication
报这个错误主要是因为mysql使用了老的密码格式,而程序要求使用新的格式导致的,解决办法: SET old_passwords = 0; UPDATE mysql.user SET Password ...
- sql server 分组排序
环境: sql server 2012 语法 select ROW_NUMBER() over(partition BY 分组字段 order by 排序字段),* as rowNums from 表 ...
- bzoj 4519: [Cqoi2016]不同的最小割【最小割树Gomory–Hu tree】
算法详见:http://www.cnblogs.com/lokiii/p/8191573.html 求出点两两之间的最小割之后,把他们扔到map/set里跑即可 可怕的是map和set跑的时间竟然完全 ...
- centos安装PHP扩展(bcmath)
Centos下搭完Mysql+Apache+PHP后,发现有些网页打开是空白的.将php.ini里面的参数 error_reporting = E_ALL,display_errors = On,di ...
- ElasticSearch | windows 上安装ES
Elastatic需要java JAVA8 环境,确保安装好环境 在windows上安装ES还是比较简单的, 1.首先在官网上下载zip,地址 https://www.elastic.co/downl ...
- 题解报告:hdu 1230 火星A+B(字符串)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1230 Problem Description 读入两个不超过25位的火星正整数A和B,计算A+B.需要 ...