/*
打不了那么大的表,所以只记录分块的信息即可
*/
#include<bits/stdc++.h>
using namespace std;
#define maxn 1000005
double arr[maxn];
void init(){
arr[0]=
0;
double tmp=
0;
for(
int i=
1;i<maxn*
100;i++
){
tmp=tmp+
1.0/
i;
if(i%
100==
0)arr[i/
100]=
tmp;
}
}
int main(){
init();
int n,T,cas=
0;
cin>>
T;
while(T--
){
cin>>
n;
int pos=n/
100,now=n%
100;
double ans=
arr[pos];
for(
int i=
1+pos*
100;i<=n;i++
)
ans+=
1.0/
i;
printf("Case %d: %.10lf\n",++
cas,ans);
}
}
转载于:https://www.cnblogs.com/zsben991126/p/10405955.html
转载请注明原文地址: https://win8.8miu.com/read-14848.html