LightOJ - 1234 Harmonic Number 分块打表的方法
2017-11-30 17:22
232 查看
题意:
略
思路:
分块打表的方式(还可以用调和级数的规律算)
1e8 的表有点大,没法直接打表 ( a[i] 表示 1/i 的前 i 项和)
所以没隔100个数往表中存一次,这样表的大小只有 1e6,多出来的直接枚举就好了
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#include<cmath>
#include<set>
#include<queue>
#include<stack>
#include<map>
#define PI acos(-1.0)
#define in freopen("in.txt", "r", stdin)
#define out freopen("out.txt", "w", stdout)
#define kuaidian ios::sync_with_stdio(0);
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int maxn = 1e6 + 7, maxd = 1e8;
const ll mod = 1e9 + 7;
const int INF = 0x7f7f7f7f;
int n;
double a[maxn];
void init() {
double t = 0.0;
for(int i = 1; i <= maxd; ++i) {
t += (1.0/i);
if(i % 100 == 0) {
a[i/100] = t;
}
}
}
int main() {
init();
int T;
scanf("%d", &T);
for(int tt = 1; tt <= T; ++tt) {
scanf("%d", &n);
double ans = 0.0;
int cnt = n/100;
ans += a[cnt];
for(int i = n/100*100+1; i <= n; ++i) {
ans += (1.0/i);
}
printf("Case %d: %.8f\n", tt, ans);
}
return 0;
}
略
思路:
分块打表的方式(还可以用调和级数的规律算)
1e8 的表有点大,没法直接打表 ( a[i] 表示 1/i 的前 i 项和)
所以没隔100个数往表中存一次,这样表的大小只有 1e6,多出来的直接枚举就好了
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#include<cmath>
#include<set>
#include<queue>
#include<stack>
#include<map>
#define PI acos(-1.0)
#define in freopen("in.txt", "r", stdin)
#define out freopen("out.txt", "w", stdout)
#define kuaidian ios::sync_with_stdio(0);
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int maxn = 1e6 + 7, maxd = 1e8;
const ll mod = 1e9 + 7;
const int INF = 0x7f7f7f7f;
int n;
double a[maxn];
void init() {
double t = 0.0;
for(int i = 1; i <= maxd; ++i) {
t += (1.0/i);
if(i % 100 == 0) {
a[i/100] = t;
}
}
}
int main() {
init();
int T;
scanf("%d", &T);
for(int tt = 1; tt <= T; ++tt) {
scanf("%d", &n);
double ans = 0.0;
int cnt = n/100;
ans += a[cnt];
for(int i = n/100*100+1; i <= n; ++i) {
ans += (1.0/i);
}
printf("Case %d: %.8f\n", tt, ans);
}
return 0;
}
相关文章推荐
- lightoj 1234 - Harmonic Number(技巧打表)
- LightOJ - 1234 Harmonic Number【调和级数求和】
- lightoj 1234 - Harmonic Number 【分块打表】
- LightOJ 1234 Harmonic Number (调和级数水题)
- 【LightOJ - 1234】 Harmonic Number 【调和级数求前n项和---分块打表】
- lightoj 1234 Harmonic Number
- LightOj 1234 Harmonic Number
- LightOJ 1234 - Harmonic Number (打表)
- lightOJ 1234 Harmonic Number
- LightOJ 1234 Harmonic Number 分布式打表
- LightOJ1234 Harmonic Number
- LightOJ 1234 Harmonic Number(调和级数求和)
- LightOJ 1234 Harmonic Number
- D - Harmonic Number——(LightOJ 1234)
- LightOJ 1234 Harmonic Number
- LightOJ - 1234 Harmonic Number
- LightOJ 1234 Harmonic Number(打表 + 技巧)
- LightOJ 1234 Harmonic Number
- LightOJ 1234 Harmonic Number (打表)
- LightOJ - 1234 Harmonic Number (调和级数)