Codeforces Beta Round #69 (Div. 2 Only)
Div. 1復帰が目標でした.A. Panoramixs Prediction
値が小さいので愚直に一つずつ試行.import java.util.*; import java.lang.*; import java.math.*; import java.io.*; import static java.lang.Math.*; import static java.util.Arrays.*; public class A{ Scanner sc=new Scanner(System.in); int INF=1<<28; double EPS=1e-9; int m, n; void run(){ m=sc.nextInt(); n=sc.nextInt(); boolean f=true; for(int i=m+1; i<n; i++){ f&=!isP(i); } f&=isP(n); println(f?"YES":"NO"); } boolean isP(int n){ for(int i=2; i*i<=n; i++){ if(n%i==0){ return false; } } return n!=1; } void println(String s){ System.out.println(s); } void print(String s){ System.out.print(s); } void debug(Object... os){ System.err.println(Arrays.deepToString(os)); } public static void main(String[] args){ new A().run(); } }
B. Depression
%12を忘れないように気をつけるだけ.import java.util.*; import java.lang.*; import java.math.*; import java.io.*; import static java.lang.Math.*; import static java.util.Arrays.*; public class B{ Scanner sc=new Scanner(System.in); int INF=1<<28; double EPS=1e-9; void run(){ String[] ss=sc.next().split(":"); double h=Integer.parseInt(ss[0]); double m=Integer.parseInt(ss[1]); h=(h%12)/12.0*360; m=m/60.0*360; h=(h+m/12)%360; println(h+" "+m); } void println(String s){ System.out.println(s); } void print(String s){ System.out.print(s); } void debug(Object... os){ System.err.println(Arrays.deepToString(os)); } public static void main(String[] args){ new B().run(); } }
C. Heroes
全探索で解くことが出来るが,ちょっとしたミスをしたためSystem Test落ち.下は修正版.import java.util.*; import java.lang.*; import java.math.*; import java.io.*; import static java.lang.Math.*; import static java.util.Arrays.*; public class C{ Scanner sc=new Scanner(System.in); int INF=1<<28; double EPS=1e-9; int n, a, b, c; int[] p, q; HashMap<String, Integer> map; void run(){ int m=7; map=new HashMap<String, Integer>(); map.put("Anka", 0); map.put("Chapay", 1); map.put("Cleo", 2); map.put("Troll", 3); map.put("Dracul", 4); map.put("Snowy", 5); map.put("Hexadecimal", 6); n=sc.nextInt(); p=new int[n]; q=new int[n]; for(int i=0; i<n; i++){ p[i]=map.get(sc.next()); sc.next(); q[i]=map.get(sc.next()); } a=sc.nextInt(); b=sc.nextInt(); c=sc.nextInt(); long dmin=1L<<32; int lmax=0; for(int k=1; k<1<<m; k++){ for(int j=1; j<1<<m; j++){ int i=((1<<m)-1)&~(k^j); if((k^j)==(k|j)&&i>0){ int x=a/Integer.bitCount(i); int y=b/Integer.bitCount(j); int z=c/Integer.bitCount(k); int d=max(abs(x-y), max(abs(y-z), abs(z-x))); int l=0; for(int e=0; e<n; e++){ if(((k>>p[e])&1)!=0&&((k>>q[e])&1)!=0) l++; else if(((j>>p[e])&1)!=0&&((j>>q[e])&1)!=0) l++; else if(((i>>p[e])&1)!=0&&((i>>q[e])&1)!=0) l++; } if(d<dmin){ dmin=d; lmax=l; }else if(d==dmin){ lmax=max(lmax, l); } } } } println(dmin+" "+lmax); } void println(String s){ System.out.println(s); } void print(String s){ System.out.print(s); } void debug(Object... os){ System.err.println(Arrays.deepToString(os)); } public static void main(String[] args){ new C().run(); } }
D. Falling Anvils
x2+√px+q=0は,p≧4qならば実解が存在する.つまり,(p,q)∈[0,a]×[-b,b]の長方形内においてp≧4qを満たす領域の面積を計算し,それを長方形の面積で割った値が,実解が存在する確率.a=0やb=0の時は,0除算を避けるために例外処理を追加する必要がある.
import java.util.*; import java.lang.*; import java.math.*; import java.io.*; import static java.lang.Math.*; import static java.util.Arrays.*; public class D{ Scanner sc=new Scanner(System.in); int INF=1<<28; double EPS=1e-9; int t; double a, b; void run(){ t=sc.nextInt(); for(int i=0; i<t; i++){ a=sc.nextInt(); b=sc.nextInt(); double area; if(4*b<a+EPS){ area=2*b*(a-b); }else{ area=a*(b+a/8); } if(abs(b)<EPS){ println("1"); }else if(abs(a)<EPS){ println("0.5"); }else{ println(area/(2*a*b)+""); } } } void println(String s){ System.out.println(s); } void print(String s){ System.out.print(s); } void debug(Object... os){ System.err.println(Arrays.deepToString(os)); } public static void main(String[] args){ new D().run(); } }ooxo- 2726p 46位
1624 -> 1654
復帰完了…というところです.
0 件のコメント:
コメントを投稿