1. 程式人生 > >poj1003 調和級數

poj1003 調和級數

Hangover
Time Limit: 1000MS Memory Limit: 10000K
Total Submissions: 89210 Accepted: 43108

Description

How far can you make a stack of cards overhang a table? If you have one card, you can create a maximum overhang of half a card length. (We're assuming that the cards must be perpendicular to the table.) With two cards you can make the top card overhang the bottom one by half a card length, and the bottom one overhang the table by a third of a card length, for a total maximum overhang of 1/2 +

 1/3 = 5/6 card lengths. In general you can make n cards overhang by 1/2 + 1/3 + 1/4 + ... + 1/(n + 1) card lengths, where the top card overhangs the second by 1/2, the second overhangs tha third by 1/3, the third overhangs the fourth by 1/4, etc., and the bottom card overhangs the table by 1/(n + 1). This is illustrated in the figure below.



Input

The input consists of one or more test cases, followed by a line containing the number 0.00 that signals the end of the input. Each test case is a single line containing a positive floating-point number c whose value is at least 0.01 and at most 5.20; c will contain exactly three digits.

Output

For each test case, output the minimum number of cards necessary to achieve an overhang of at least c card lengths. Use the exact output format shown in the examples.

Sample Input

1.00
3.71
0.04
5.19
0.00

Sample Output

3 card(s)
61 card(s)
1 card(s)
273 card(s)
題目的意思是: 對於給定的資料,最少需要多少張卡片可以組成這樣的長度 其實就是求這樣的級數和的最小n 注意第二種演算法,通過空間來節省時間
#include <iostream>

using namespace std;

#define MEM_FISRT 1

int main()
{
    double len;
#if MEM_FIRST 
    while(cin >> len && len != 0.00){
        double sum = 0.0;
        double n = 2.0;
        while(1){
            sum += 1.0 / n;
            if (sum >= len) break;
            n += 1.0;
        }   
        cout << (double)n-1 << " card(s)"<< endl;
    }   
#else
    double res[300] = {0.0, 0.5};
    for (int i = 2; i < 300;++i){
        res[i] = res[i-1] + 1.0/(i+1);
    }   
    while(cin >> len && len != 0.00){
        for (int i = 0; i < 300; ++i){
            if (res[i] >= len) {
                cout << i << " card(s)"<< endl;
                break;
            }   
        }   
    }   
#endif


    return 0;
}
參考:

相關推薦

poj1003 調和級數

Hangover Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 89210 Accepted: 43108 Description How far can you make a s

【CF827E】Rusty String 調和級數+FFT

esp style light ora () name include {} %d 【CF827E】Rusty String 題意:給你一個01串,其中部分字符是‘?‘,?可以是0或1,求所有可能的d,滿足存在一種可能得到的01串,在向右移動d格後與自己相同。 $n\l

BZOJ1607: [Usaco2008 Dec]Patting Heads 輕拍牛頭(模擬 調和級數)

input amp bzoj clas limit ++ 維護 discuss NPU Time Limit: 3 Sec Memory Limit: 64 MBSubmit: 3031 Solved: 1596[Submit][Status][Discuss] De

51nod 1421 最大MOD值 codeforce 484B. Maximum Value【調和級數複雜度T_T】

文章目錄 題目連結: 題目連結: 51nod 1421 cf484B 參考部落格:https://blog.csdn.net/linkfqy/article/details/78300976 對哈,裡面那層迴圈的複雜度是調和級數,數越大列舉

計蒜客 手拉手 調和級數

Description 小 P 是個幼兒園老師。有一天,他組織 nnn 個小朋友玩遊戲。遊戲開始時,每個小朋友伸出兩隻手,沒有手相互拉在一起。 每次,小 P 等概率隨機挑選兩隻空著的手,讓這兩隻手拉在

1/1 + 1/2 + 1/3 + 1/4 + ... 在數學上稱為調和級數,求前多少項的和才超過15.0?

如果An是全部不為0的等差數列,則1/An就稱為調和數列,求和所得即為調和級數,易得,所有調和級數都是發散於無窮的。 1/1 + 1/2 + 1/3 + 1/4 + ... 在數學上稱為調和級數。 它是發散的,也就是說,只要加上足夠多的項,就可以得到任意大的數字。 但是

LightOJ1234調和級數求和公式

1234 - Harmonic Number Time Limit: 3 second(s) Memory Limit: 32 MB In mathematics, the nth harm

藍橋杯_C語言_本科B——調和級數

1/1 + 1/2 + 1/3 + 1/4 + … 在數學上稱為調和級數。 它是發散的,也就是說,只要加上足夠多的項,就可以得到任意大的數字。 但是,它發散的很慢: 前1項和達到 1.0 前4項和才超過 2.0 前83項的和才超過 5.0 那麼,請你

演算法學習之調和級數

        Harmonic numbers(調和級數,參考連結:About Harmonic numbers)常用於演算法分析,它的最大特徵是:隨著n取值的增大,相鄰的兩個Harmonic numbers的差將變小,且它不收斂,趨向於無窮,只是遞增的趨勢會越來越慢。原

bzoj2119: 股市的預測 Hash+二分 調和級數

bzoj2119: 股市的預測 題目傳送門 分析 差分之後就是求有多少段相距 B B B的相

離散基礎 (15). 調和級數分析

1. 定義 Hn=∑k=1n1k 2. 問題描述 調和級數Hn直觀上可以理解為在服從牛頓重力力學原理的前提下,問桌子邊緣能摞起的最大可能的懸空部分的長度是多少? 3. 問題分析 我們假設紙牌的

藍橋 調和級數

1/1 + 1/2 + 1/3 + 1/4 + ... 在數學上稱為調和級數。 它是發散的,也就是說,只要加上足夠多的項,就可以得到任意大的數字。 但是,它發散的很慢: 前1項和達到 1.0 前4項

計算調和級數

思路:使用雙精度型別求解 由調和數列各元素相加所得的和為調和級數,易得,所有調和級數都是發散於無窮的。但是其拉馬努金和存在,且為尤拉常數。 很早就有數學家研究,比如中世紀後期的數學家Ore

關於調和級數問題(14屆藍橋杯b組第二題)

今天,不對,準確說是昨天(不知不覺就凌晨了),又做了14屆藍橋杯b組第二題,猛一看,感覺藍橋杯b組的題不是我的菜,太簡單是一個求調和級數的問題,題如下: 1/1 + 1/2 + 1/3 + 1/4 + … 在數學上稱為調和級數。 它是發散的,也就是說,只要

Harmonic Number(調和級數+尤拉常數)

Harmonic Number Time Limit:3000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu De

【學習筆記】與調和級數相關的時間複雜度

宣告:博主寫這個部落格的理由只是為了緩解心情,大部分的東西都是我手推的,沒有驗證過,如果有問題敬請指出。 Noip2018day1完掛,非常難受,過來寫個部落格頹一下,緩解心情 1. 調和級數 調和級數

第五屆藍橋杯Java語言C組_調和級數

1/1 + 1/2 + 1/3 + 1/4 + ... 在數學上稱為調和級數。 它是發散的,也就是說,只要加上足夠多的項,就可以得到任意大的數字。 但是,它發散的很慢: 前1項和達到 1.0 前4項

BZOJ_P2048 [2009國家集訓隊]書堆(調和級數+尤拉常數)

BZOJ傳送門 Time Limit: 10 Sec Memory Limit: 259 MB Submit: 957 Solved: 440 [Submit][Status][Discuss

8. 調和級數部分和的計算(Patial sum calculation of harmonic series)

題目:2.3-8. 用數值計算來體驗調和級數\!\(\*UnderoverscriptBox[\(\[Sum]\), \(n = 1\), \(\[Infinity]\)]\*FractionBox[\

LightOJ 1234(調和級數、有通項公式的發散數列求和)

調和級數求和(1/1+1/2+1/3+……..+1/n) 可用於大數有通項公式的求和計算 利用分組來平衡記憶體和時間 #include <algorithm> #include <