close

題目概要:

給定一公式(請看英文版題目),帶入公式後可以得到一個元的直徑。現在要做一條項鍊,請算出項鍊最長可以多少。 Ps 一個Case同時找到2個相同長度,這樣也不能算是有找到答案。

解題方向:

使用一個vector紀錄找到的長度,判斷vector 的 size是否為0,或者裡面數值是否有相同,再去做輸出。

程式碼:

//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;
}
}
}
}
}
view raw uva11001.java hosted with ❤ by GitHub

arrow
arrow
    文章標籤
    Java
    全站熱搜
    創作者介紹
    創作者 a7069810 的頭像
    a7069810

    紀錄自己的程式人生

    a7069810 發表在 痞客邦 留言(0) 人氣()