您的位置:首页 > 其它

河南省多校连萌(五)【zzuli 2183 就是签到题XD】

2017-08-27 00:21 309 查看
点击打开链接

2183: 就是签到题XD

Time Limit: 1 Sec  Memory Limit: 64 MB
Submit: 525  Solved: 79

SubmitStatusWeb
Board

Description

In mathematics, we suppose that f(1)=1, f(i)-f(i-1)=1/i, (2<=i<=n)

Input

Input starts with an integer T (≤ 10000), denoting the number of test cases.
Each case starts with a line containing an integer n (2 ≤ n ≤10^7).

Output

For each case, print the case number and the value of f(n). The answer should be rounded to 10 decimal places.

Sample Input

3234

Sample Output

Case 1: 1.5000000000Case 2: 1.8333333333Case 3: 2.0833333333

HINT

Source

河南省多校连萌(五)

题解:f(i)=1/1+1/2+1/3+1/4+...+1/i;分段打表即可求解(64MB<10e7*8),不然会出现内存超限。。。

#include<cstdio>
#define Max 10000005
double temp[Max/100];
void init()
{
double s=0,q=1;
for(int i=1;i<Max;i++)
{
s+=q/(double)i;
if(i%100==0)
temp[i/100]=s;
}
return ;
}
int main()
{
double ans;
int n,a;
init();
while(~scanf("%d",&n))
{
for(int i=1;i<=n;i++)
{
scanf("%d",&a);
ans=temp[a/100];
for(int j=a/100*100+1;j<=a;j++)
ans+=(double)1/j;
printf("Case %d: %.10lf\n",i,ans);
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: