ACM题中所谓的多组数据输入到底是什么意思

chuifeng56 2010-08-29 01:25:10
Problem Description

世界著名的物理学家Albert正在计算的值。不幸的是,由于这项工作十分枯燥无味,这位伟大的物理学家得到了错误的答案。由于这一错误,它制造的几颗原子弹失去了控制,射向了五座重要的城市和一片热带雨林……

现在你的任务是帮助这位物理学家纠正这一错误,从而拯救世界。对于给定的n (n≤5*10^6),计算代数式的值。

Input

输入数据由多组数据组成。每组数据一行,仅有一个整数,表示n的值。

Output

对于每组数据,输出代数式的值(小数点后保留12位有效数字)。
Sample Input

2

Sample Output

1.500000000000




像这道题,我理解为对应每次输入输出结果再进行下次输入,有错误么?还是说要一次输入多个数据,分别输出结果??如果是这样的话,怎么判定输入结束??(输入数据个数未知的话)

我的代码,是wrong answer

#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
double i,s=0,n;
while(cin>>n)
{
for(i=1;i<=n;i++)
{
s=s+1/i;
}
cout<<setiosflags(ios::fixed)<<setprecision(12)<<s<<endl;
i=1;
s=0;
}
return 0;
}

...全文
2369 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
a542107840 2010-09-15
  • 打赏
  • 举报
回复
我也以前也遇到过你这个问题,我同学也是,所以我们曾经,把同一个可以AC的程序,用你说的这两种输入输出方式都试了一下,结果都能AC,所以后来我就认为这不是主要的问题,现在我也就习惯输入一个输出一个这种方式了。但我最近也遇到了有关CASE的输出格式问题,弄的我很纠结,现在还没解决,7楼这为好同志关于我那个问题回了我好几个贴了,可我还是那么顽固,我还在想。与君共勉!
baihacker 2010-08-29
  • 打赏
  • 举报
回复
#include <cstdio>
#include <cmath>
const double eular = 0.5772156649015328;
int main()
{
double ans[61] = {0};
for (int i = 1; i <= 60; ++i)
{
ans[i] = ans[i-1] + 1.0 / i;
}
for (int n; scanf("%d", &n) == 1; )
{
if (n <= 60) printf("%.12f\n", ans[n]);
else
{
double n1 = n;
double n2 = n1 * n1;
double ans = log(n1) + eular + 0.5 / n1 - 1.0/12/n2 + 1.0 / 120 / (n2*n2);
printf("%.12f\n", ans);
}
}
return 0;
}
chuifeng56 2010-08-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 baihacker 的回复:]

一般说来输入两种:
第一行一个数表示test case数目,然后若干个test case。
另一种直接就是若干个test case,这样的话需要自己判断读入失败,失败的时候表示没有test case。

比如第二种,题目要求是输入一个数,输出这个数的平方。
sample input
1
2
3

sample output
1
4
9

而自己调试的时候读一个,输出……
[/Quote]


这样子么??那我的代码应该没错吧,为什么会不能AC呢??新手很白,麻烦你了……
rig622 2010-08-29
  • 打赏
  • 举报
回复
对输入的数据 2 6 9 数据之间加个空格,可以实现这个三个数据同时输出。
baihacker 2010-08-29
  • 打赏
  • 举报
回复
一般说来输入两种:
第一行一个数表示test case数目,然后若干个test case。
另一种直接就是若干个test case,这样的话需要自己判断读入失败,失败的时候表示没有test case。

比如第二种,题目要求是输入一个数,输出这个数的平方。
sample input
1
2
3

sample output
1
4
9

而自己调试的时候读一个,输出一个,于是就会在屏幕上“看”到:
1
1
2
4
3
9

于是就把这些都认为是“输出”的东西,和要求的
1
4
9
不同。
其实不然,
只有其中的1 4 9是你输出的,而判题的程序只会检查你的输出。

实际上input是放在一个文件里的,然后把文件作为你程序的输入,然后把你的输出定向到一个文件,最后检查你输出的文件和需要的一不一样。

LZ犯的错误是把“看”到的东西和需要检查的东西搞混了。

有时,为了避免这样,题目会这样给
sample input1
1
sample output1
1

sample input2
2
sample output2
4

sample input3
3
sample output3
9

同时注明是多case的。


实际上最贱的是:把case数和若干个case作为一个大的CASE,然后告诉你是多case,这就很不爽了。一般也遇不到这种情况。
chuifeng56 2010-08-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wzmlove007 的回复:]

我以前做过的,不过我也是的得到的错误答案,我的做法是输入一组数据,应该不是一次输入一个
一次性输完
[/Quote]

有想过一次性输入存储在一个数组中,但不知道怎么判断输入结束,进行运算和输出……
chuifeng56 2010-08-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wzmlove007 的回复:]

我以前做过的,不过我也是的得到的错误答案,我的做法是输入一组数据,应该不是一次输入一个
一次性输完
[/Quote]

请问要怎么判断输入结束??
wzmlove007 2010-08-29
  • 打赏
  • 举报
回复
我以前做过的,不过我也是的得到的错误答案,我的做法是输入一组数据,应该不是一次输入一个
一次性输完

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧