close
題目概要:
給定一公式(請看英文版題目),帶入公式後可以得到一個元的直徑。現在要做一條項鍊,請算出項鍊最長可以多少。 Ps 一個Case同時找到2個相同長度,這樣也不能算是有找到答案。
解題方向:
使用一個vector紀錄找到的長度,判斷vector 的 size是否為0,或者裡面數值是否有相同,再去做輸出。
程式碼:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//Java | |
import java.util.Scanner; | |
import java.util.Vector; | |
import java.math.BigDecimal; | |
class uva11001{ | |
public static void main(String args[]){ | |
Scanner sc=new Scanner(System.in); | |
double v,v0; | |
while(sc.hasNextInt() && (v=sc.nextDouble())!=0 &&(v0=sc.nextDouble())!=0){ | |
double max=0; | |
//計算當V>V0時有多少種長度,並記錄下來。 | |
Vector<Double> vector=new Vector<Double>(); | |
for(int i=1;i<v;i++){ | |
if(v/i>v0){ | |
BigDecimal change=new BigDecimal(0.3*Math.sqrt(v/i-v0)*i); | |
change=change.setScale(5,BigDecimal.ROUND_DOWN); //取到小數點下5位。C/C++用float即可。 | |
double temp2=Double.parseDouble(change.toString()); | |
vector.add(temp2); | |
if(temp2>max) max=temp2; //紀錄最大數值。 | |
} | |
} | |
//Output | |
if(vector.size()==0)System.out.println("0"); //當size=0代表沒有找到。 | |
for(int i=0;i<vector.size();i++){ | |
if(vector.get(i)==max){ | |
boolean flag=true; | |
//判斷是否有相同數值。 | |
for(int j=i+1;j<vector.size();j++){ | |
if((double)vector.get(j)==max) flag=false; | |
} | |
if(flag) System.out.println(i+1); | |
else System.out.println("0"); | |
break; | |
} | |
} | |
} | |
} | |
} | |
文章標籤
全站熱搜