题目链接:http://lightoj.com/volume_showproblem.php?problem=1234
sb题,分块打表就行
#include <stdio.h>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
using namespace std;
double ans[1000010];
void init(){
memset(ans,0,sizeof(ans));
double p=0.0;
for(int i=1;i<=100000000;i++){
p+=1.0/(double)i;
if(i%100==0)ans[i/100]=p;
}
}
int main(void)
{
init();
int t,cas=0;
scanf("%d",&t);
while(t--){
int n;
scanf("%d",&n);
double an=ans[n/100];
for(int i=(n/100)*100+1;i<=n;i++)an+=1.0/i;
printf("Case %d: %.10lf\n",++cas,an);
}
return 0;
}