基本思路为,确定最长边的范围,对每一种情况求和,最后加以修正 import java.util.Scanner; import java.io.FileInputStream;
/** * Created by IntelliJ IDEA. * User: Yu Fan * Date: 2005-4-23 * Time: 14:01:29 * To change this template use File | Settings | File Templates. */ public class B { static Scanner in; static { try { System.setIn(new FileInputStream("B.txt")); in = new Scanner(System.in); } catch(Exception e) { e.printStackTrace(); } } public static void main(String[] arg) { while(in.hasNext()) { long q=in.nextLong(); long ans=in.nextLong(); long my=0; long i; if(q%3==0) i=q/3; else i=q/3+1; long p; if(q%2==0) p=q/2; else p=q/2+1; my=(3*i+3*p-2*q-1)*(p-i)/4; if((p-i)%4==0) { my+=(p-i)/4; } else if((p-i)%4==1) { if((3*i-q+1)%2==0) { my+=(p-i)/4; } else { my+=(p-i)/4+1; } } else if((p-i)%4>=2) { my+=(p-i)/4+1; } /* 以上为下面循坏的级数求和 for(i=i;i<p;i++) { long k; k=3*i-q+1; if(k%2==1) k=k/2+1; else k=k/2; my+=k; } */ if(my!=ans) { System.out.println("Bad luck!"); } else { System.out.println("Congratulations!"); } } } }

|