hdu 6222
来源:互联网 发布:金石软件win10 编辑:程序博客网 时间:2024/06/07 15:38
(高精度+找规律)
题意:给定
思路:没思路就打表,打表千万不能打错!!!(打错了就会像我一样找规律找个半个小时都没找到,要注意
代码:
import java.math.BigDecimal;import java.math.BigInteger;import java.util.*;public class Main { public static double eps = 1e-6; public static BigInteger[] a = new BigInteger[80]; public static BigInteger sqrt(BigInteger x) { BigInteger div = BigInteger.ZERO.setBit(x.bitLength()/2); BigInteger div2 = div; // Loop until we hit the same value twice in a row, or wind // up alternating. for(;;) { BigInteger y = div.add(x.divide(div)).shiftRight(1); if (y.equals(div) || y.equals(div2)) return y; div2 = div; div = y; } } public static void print_table(String mx_num) { for(BigDecimal i=BigDecimal.valueOf(3); i.compareTo(new BigDecimal(mx_num))<=0; i=i.add(BigDecimal.ONE)) { // p = 3*i / 2 BigDecimal p = BigDecimal.valueOf(3).multiply(i).divide(BigDecimal.valueOf(2)) ; // area2_dec = p*(p-i+1)*(p-i)*(p-i-1) BigDecimal x1 = p.subtract(i).add(BigDecimal.ONE); BigDecimal x2 = p.subtract(i); BigDecimal x3 = p.subtract(i).subtract(BigDecimal.ONE); BigDecimal area2_dec = p.multiply(x1).multiply(x2).multiply(x3); BigInteger area2_int = area2_dec.setScale(0, BigDecimal.ROUND_HALF_DOWN).toBigInteger(); // if(fabs(area2_int - area2_dec) > eps) continue ; if((new BigDecimal(area2_int).subtract(area2_dec).abs()).compareTo(BigDecimal.valueOf(eps)) > 0) continue ; BigInteger area_int = sqrt(area2_int); // if(area_int * area_int != area2_int) continue ; if(area_int.multiply(area_int).compareTo(area2_int) != 0) continue ; System.out.println(i); } } public static void pre_treat() { a[0] = BigInteger.valueOf(2); a[1] = BigInteger.valueOf(4); for(int i=2; i<60; i++) { a[i] = a[i-1].multiply(new BigInteger("4")).subtract(a[i-2]); //System.out.println(a[i]); } } public static void main(String[] args) { //print_table("10000000"); pre_treat(); Scanner cin = new Scanner(System.in); int T; T = cin.nextInt(); while((T--) > 0) { BigInteger n = cin.nextBigInteger(); for(int i=1; i<60; i++){ if(a[i].compareTo(n) >= 0) { System.out.println(a[i]); break ; } } } cin.close(); }}
阅读全文
1 0
- hdu 6222
- hdu
- hdu
- HDU
- hdu ()
- hdu
- hdu
- HDU
- HDU
- hdu
- hdu
- HDU
- Hdu
- hdu
- hdu-
- hdu
- hdu
- hdu
- String,StringBuffer,StringBuilder的区别
- 程序员的数学(一)
- spring AOP的实现原理(动态代理)
- NEUQOJ 1198: 三进制小数
- 管理 Java 类路径
- hdu 6222
- org.springframework.validation.BindException:
- 模拟实现list
- 分割树叶(数字图像处理)
- OpenCV入门学习之读取usb摄像头图像,实时显示
- C语言队列之链队列
- ORACLE 查看用户会话,强制结束,并删除用户.
- PyTorch的dropout设置训练和测试模式
- Yilia主题+实现文章目录