这道题不难,就是缓解心情做的,可是测试数据时发现了黑洞。
当我测试数据100时,发现不出来答案,接着我测了99, 99.999……,小数点后13个9时还立刻出来答案1794,但是小数点后14个9时,就出现了虚无,啊!!!从微积分的观点来看,调和级数是发散的于无穷的,不应该大于不了100呀!好恐怖。
下面是100分的代码
#include<iostream>
#include<cstdio>
using namespace std;
int main() {
double x;
double d = 2;
int count = 0;
cin >> x;
while (x>0) {
x -= d;
d *= 0.98;
count++;
}
cout << count << endl;
return 0;
}
二次编辑
好吧,现在再回头看我大一下学C语言时写的代码,当时还不知道有计算机浮点数的精度问题。当一个正浮点数太小时,计算机表示不了,IEEE754标准等数据表示都有个范围,太小称为下溢。大家还要相信数学。2017-8-29 22:14:20
给出题目链接:洛谷1423