天天看點

Java實作 藍橋杯VIP 算法訓練 調和數列

問題描述

  輸入一個實數x,求最小的n使得,1/2+1/3+1/4+…+1/(n+1)>=x。

輸入的實數x保證大于等于0.01,小于等于5.20,并且恰好有兩位小數。你的程式要能夠處理多組資料,即不停地讀入x,如果x不等于0.00,則計算答案,否則退出程式。

輸出格式為對于一個x,輸出一行n card(s)。其中n表示要計算的答案。

輸入格式

  分行輸入x的具體數值

輸出格式

  分行輸出n的數值,格式為n card(s)

樣例輸入

1.00

3.71

0.04

5.19

0.00

樣例輸出

3 card(s)

61 card(s)

1 card(s)

273 card(s)

import java.util.Scanner;


public class 調和數列問題 {
	  public static void main(String args[]){
          Scanner sc=new Scanner (System.in);
           while(true){
               double d=sc.nextDouble();
                double sum=0;
                int count=0;
                 if(d==0.00)
                    break;
                else{
              for(int i=2;;i++){
                    sum+=1.0/i;
                   if(sum>=d){
                     count=i-1;
                     break;
               }
           }

           System.out.println(count+" card(s)");
             }
           }
       }

}