原题题目写得不太清楚,大致是说,你输入一个探出去的长度,要求输出达到这个长度所需要的最少卡片数。
说白了就是求满足大于sum的最小n值。
代码如下
#include<iostream>
using namespace std;
int howmany_card(double sum) {
double n = 0.0;
int i = 2;
while (n < sum) {
n += 1.0 / i;
i++;
}
return i-2;
}
int main() {
double sum = 0.0;
cin >> sum;
if (sum < 0.01 || sum>5.20) return false;
int n=howmany_card(sum);
cout << n << endl;
return 0;
}
比较简单,但要注意精度统一。
至于howmany_card函数中返回的是 i-2 ,可以代入0.5需要一张卡片的例子