A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

题目大意:给出一个距离dis,表示堆在桌子上的扑克的伸出距离,问你至少需要多少张扑克能够堆出这个伸出距离。

  数理分析:其实这道题目的描述就是给出了我们的解题方法,它告诉我们n张扑克能够伸出的最远距离是∑1/i,i∈[2,i+1],这就使得问题变得简单了很多。但是这个问题的原始模型其实是基于长度为2、质量为1的扑克的条件,它其实是调和数的基本模型。

参考代码如下。
[C] 纯文本查看 复制代码
#include<cstdio> using namespace std;

int main()
{
     double dis;
     double temp,j;
     int i;
     while(scanf("%lf",&dis)!=EOF && dis != 0.00)
     {
                temp = 0;
              for(i = 2;;i++)
              {
                   j = (double)i;
                   temp += 1/j;
                      if(temp >= dis)
                           break;
              }

         printf("%d card(s)\n",i-1);

     }
}

1 个回复

倒序浏览
66666666666666666666666666666
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马