#include<iostream>
using namespace std;
double x;
int main(void){
double len[300];//减少重复计算
for(int i=0;i<300;i++)
len[i]=0;
while(1){
cin>>x;
if(x==0.00)break;
int i;
for(i=1;;i++){
if(i==1)len[i]=1.00/2.00;
if(len[i]==0.00)
len[i]=len[i-1]+(1.00/(i+1.00));
if(len[i]>=x)
break;
}
cout<<i<<" card(s)"<<endl;
}
return 0;
}
using namespace std;
double x;
int main(void){
double len[300];//减少重复计算
for(int i=0;i<300;i++)
len[i]=0;
while(1){
cin>>x;
if(x==0.00)break;
int i;
for(i=1;;i++){
if(i==1)len[i]=1.00/2.00;
if(len[i]==0.00)
len[i]=len[i-1]+(1.00/(i+1.00));
if(len[i]>=x)
break;
}
cout<<i<<" card(s)"<<endl;
}
return 0;
}
本文介绍了一个通过递推算法解决特定卡片问题的C++程序实现。该程序利用数组存储已计算过的中间结果来减少重复计算,提高效率。针对输入的浮点数x,程序能够快速找到使得累计和首次大于等于x的最小整数i,并输出对应的卡片数量。
842

被折叠的 条评论
为什么被折叠?



