题意还是需要看原题,不好描述。
实际上这个题只需要注意一点,就是把关系式改成递推式,然后就可以发现第二项完全决定了后面的位置,所以二分第二项的高度即可。
import java.util.*; import java.io.*; import java.math.*; public class Main { public static final int maxv = 200005; public static final int shift = 100000; static int N; static double A; public static void main(String[] args) throws Exception { Scanner in = new Scanner(new File( "/home/develop/eclipse_file/ACMproject/src/in")); // Scanner in=new Scanner(System.in); N=in.nextInt(); A=in.nextDouble(); double l=A,r=0; double ansl=1e10,ansl2=0; while(Math.abs(ansl-ansl2)>0.001){ double mid=(l+r)/2; double res=check(mid); if(res>0){ l=mid; ansl2=ansl; ansl=res; }else{ r=mid; } } System.out.printf("%.2f\n",ansl); in.close(); } static double check(double a2){ double now=0; double a1=A; int i; for(i=3;i<=N;i++){ now=2*a2-a1+2; a1=a2; a2=now; if(now<0) return -1; } return now; } }
时间: 2024-12-20 00:59:34