Untitled
unknown
plain_text
2 years ago
2.1 kB
12
Indexable
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Pob2 {
static{
try {
System.setIn(new FileInputStream("src/inp.txt"));
// System.setOut(new PrintStream("src/out.txt"));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
static double diff=1e-13;//NOTE o day phai la 1e-13ko phai 1e-9
static double search(int[] mass,int pos[],int start,int end,double l,double r) {
while(r-l>=diff) { //sai khac giua toa do >= diff (sai so cho phep)
double m=l+(r-l)/2d;
double f=0;
for(int i=0;i<=start;++i)
f+=(double)mass[i]/((m-pos[i])*(m-pos[i]));//m la toa do cua vat bi tac dong luc
for(int i=end;i<pos.length;++i)
f-=(double)mass[i]/((pos[i]-m)*(pos[i]-m));
if(f<diff && f>-diff)//note xem xet ca sai so cua luc tac dong len diem giua, neu < cho phep thi stop
break;
else if(f>0)//luc ben trai>ben phai thi tang l de giam luc ben trai
l=m;
else
r=m;
}
return l+(r-l)/2d;
}
/*tim kiem nhi phan
* dau tien xac dinh cong thuc tinh luc tac dung len 1 diem bat ky
* F=Gm1m2/d^2 => m1 klg vat tac dung, m2 vat bi tac dong, d: kc giua 2 vat
* => nhieu vat tac dong len: m1/d1^2 + m2/d2^2 + ... = mn/dn^2
* => de can bang luc trai va phai: => m1/d1^2 + m2/d2^2 + ... - mn/dn^2 ~ 0
* tim kiem nhi phan theo toa do chieu dai cua tung vat
* */
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int t=0;
while(scanner.hasNext()) {
int n=Integer.parseInt(scanner.next());
int[] pos=new int[n],mass=new int[n];
for(int i=0;i<n;++i) pos[i]=Integer.parseInt(scanner.next());
for(int i=0;i<n;++i) mass[i]=Integer.parseInt(scanner.next());
System.out.printf("#%d ",++t);
for(int i=0;i<n-1;++i)//xac dinh n-1 diem can bang cho n diem
System.out.printf("%.10f ",search(mass, pos, i, i+1, pos[i], pos[i+1]));
System.out.print('\n');
}
scanner.close();
}
}
Editor is loading...