hiho1234--Fractal(高精度)
2015-09-29 15:58
357 查看
题目大意:给一个正方形,然后取各边的中点,连接成一个新的正方形,每次在新的正方形中重复此过程,共1000次。最后给出一条平行与y轴的线,问经过多少条边。
分析:规律蛮好找的,思路蛮好想的。然而,精度的问题,还是用Java好了。这是第一次用Java写,所以,参考了下别人的代码,传送门:http://www.cnblogs.com/qscqesze/p/4824212.html
这个是UESTC卿神的博客。Orz...
代码:
import java.math.BigDecimal;
import java.util.Scanner;
public class Main
{
static BigDecimal a[] = new BigDecimal[1005];
public static void main(String argv[]) throws Exception
{
Scanner scanner = new Scanner(System.in);
BigDecimal x = BigDecimal.valueOf(0.5);
BigDecimal k = BigDecimal.valueOf(0.5);
BigDecimal y;
a[0] = BigDecimal.valueOf(0);
for(int i = 1; i <= 500; i++)
{
x = x.multiply(k);
a[i] = a[i-1].add(x);
}
int T = scanner.nextInt();
while(T != 0)
{
int L = 0, R = 500;
y = scanner.nextBigDecimal();
while(L <= R)
{
int mid = (L+R)/2;
int result = a[mid].compareTo(y);
if(result == -1) L = mid+1;
else if(result == 1) R = mid-1;
else
{
L = mid;
break;
}
}
if(a[L].compareTo(y) == 0) System.out.println(-1);
else System.out.println(L*4);
T--;
}
}
}
分析:规律蛮好找的,思路蛮好想的。然而,精度的问题,还是用Java好了。这是第一次用Java写,所以,参考了下别人的代码,传送门:http://www.cnblogs.com/qscqesze/p/4824212.html
这个是UESTC卿神的博客。Orz...
代码:
import java.math.BigDecimal;
import java.util.Scanner;
public class Main
{
static BigDecimal a[] = new BigDecimal[1005];
public static void main(String argv[]) throws Exception
{
Scanner scanner = new Scanner(System.in);
BigDecimal x = BigDecimal.valueOf(0.5);
BigDecimal k = BigDecimal.valueOf(0.5);
BigDecimal y;
a[0] = BigDecimal.valueOf(0);
for(int i = 1; i <= 500; i++)
{
x = x.multiply(k);
a[i] = a[i-1].add(x);
}
int T = scanner.nextInt();
while(T != 0)
{
int L = 0, R = 500;
y = scanner.nextBigDecimal();
while(L <= R)
{
int mid = (L+R)/2;
int result = a[mid].compareTo(y);
if(result == -1) L = mid+1;
else if(result == 1) R = mid-1;
else
{
L = mid;
break;
}
}
if(a[L].compareTo(y) == 0) System.out.println(-1);
else System.out.println(L*4);
T--;
}
}
}
相关文章推荐
- 国内常见的电子地图坐标介绍
- P14 (*) -P15 (**)Duplicate the elements of a list,Duplicate the elements of a list a given number of
- 关于2015年中一点小总结
- linux命令行练级攻略
- Oracle中rownum用法详解
- [动态规划]整数拆分(纯DP)
- 学会这6个好习惯,善待你的脖子?
- 在Ubuntu 12.04安装和设置Samba实现网上邻居共享
- Binary String Matching 5 (简单KMP模板题)
- HTTP协议
- CSS3盒模型display:box详解
- 终止所有nginx进程
- java web目录结构
- 在Ubuntu 12.04安装和设置SSH服务
- Android Bitmap 与 Drawable之间的区别和转换
- 鞍点
- PHP代码优化技巧小结
- 新申请的实验
- 条款51:编写new和delete时需固守常规
- constexpr和常量表达式