POJ Octal Fractions(JAVA水过)
题目链接: id=1131" target="_blank">CLICK HERE~
尽管java一下模拟水过,可是我看到别人的一段奇妙代码,贴出和大家共享。
import java.math.*;
import java.util.*; class Main{
public static void main(String args[]){
Scanner cin = new Scanner(System.in);
BigDecimal Eight = new BigDecimal(8);
while(cin.hasNext()){
String num;
num = cin.nextLine();
BigDecimal ans = new BigDecimal(0);
BigDecimal tmp = new BigDecimal(1);
for(int i = 2;i < num.length();++i){
tmp = tmp.divide(Eight);
ans = ans.add(new BigDecimal(num.charAt(i) - '0').multiply(tmp));
}
System.out.println(num + " [8] = " + ans + " [10]");
}
}
}
这个算法是将除法转变为乘法。对于0.d1d2d3 ... dk [8],本来是d1/8+d2/(8^2)+...+dk/(8^k)。这个算法将 dn/8转变为 dn * 125。然后不断让 y 乘以 1000。起到保存小数位数的作用。最后的结果就相当于是 对dn每次乘以0.125。
#include<cstdio>
#include<cstring>
char c[50];
int i,l;
double x,y;
int main()
{
while(scanf("%s",c)!=EOF)
{
printf("%s [8] = ",c);
l=strlen(c)-1;
x=0;
y=1;
for(i=l;i>1;i--)
{
x=((c[i]-'0')*y+x)*125;
y*=1000;
}
x/=y;
i=0;
while(x)
{
c[i]=int(x*=10)%10+'0';
x-=c[i]-'0';i++;
}
c[i]='\0';
printf("0.%s [10]\n",c);
}
}
POJ Octal Fractions(JAVA水过)的更多相关文章
- Octal Fractions java秒 C++
Octal Fractions 题目抽象: 将八进制小数转换成十进制小树.小数的为数很大. 可以用java 中的BigDeciaml 秒掉. time:297ms 1 import java. ...
- Octal Fractions
Octal Fractions Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 149 Solved: 98 Description Fractions ...
- POJ 1488 Tex Quotes --- 水题
POJ 1488 题目大意:给定一篇文章,将它的左引号转成 ``(1的左边),右引号转成 ''(两个 ' ) 解题思路:水题,设置一个bool变量标记是左引号还是右引号即可 /* POJ 1488 T ...
- poj 1131 Octal Fractions(高精度小数进制转换) Java
虽然题目那么长其实就是把8进制的浮点数转换成10进制,为了练习Java Biginteger 类 我这里用的是Java,也可以用数组模拟. import java.math.BigDecimal; i ...
- POJ 2389 Bull Math(水~Java -大数相乘)
题目链接:http://poj.org/problem?id=2389 题目大意: 大数相乘. 解题思路: java BigInteger类解决 o.0 AC Code: import java.ma ...
- TOJ 2861 Octal Fractions
描述 Fractions in octal (base 8) notation can be expressed exactly in decimal notation. For example, 0 ...
- poj 2506 Tiling(java解法)
题目链接:id=2506">http://poj.org/problem?id=2506 本题用的java解的.由于涉及到大数问题,假设对java中的大数操作不熟悉请点这儿:链接 思路 ...
- poj 2105 IP Address(水题)
一.Description Suppose you are reading byte streams from any device, representing IP addresses. Your ...
- poj 2000 Gold Coins(水题)
一.Description The king pays his loyal knight in gold coins. On the first day of his service, the kni ...
随机推荐
- js获取中英文长度
function getLength(str) { var len = str.length; var reLen = 0; for (var i = 0; i < len; ...
- dojo 学习笔记
1 因为Dijit包括了一系列的UI组件,他绑定了4个支持的主题:nihilo, soria, tundra 和claro.每个主题包括了一系列的图片和CSS文件来控制组件的外观.CSS文件必须显示 ...
- 框架技术--Spring自动加载配置
今天项目中遇到一个问题,一个方法在服务启动后会自动被执行,查看了下配置未发现有定时的配置.但是后来发现是spring配置了启动时默认加载了方法. 代码: <?xml version=" ...
- Android_Dialog_设置Dialog窗体的大小
/** * 设置Dialog窗体的大小 */ private void setWindowSize() { DisplayMetrics dm = new DisplayMetrics(); Wind ...
- config -导航
在config进行中配置 1在config中添加SITmap <siteMap enabled="true" defaultProvider="UserSiteM ...
- 利用jQuery获取数据,JSONP
最近工作用到了跨域请求,所以此文就有了,概念网上都有,就不细说了,直接来了. 看了一篇文章,说的是通过扩展让ASP.NET Web API支持JSONP,jsonp网上有很多的教程,js代码部分基本和 ...
- CAEmitterLayer 粒子发射器
在iOS 5中,苹果引入了一个新的CALayer子类叫做CAEmitterLayer.CAEmitterLayer是一个高性能的粒子引擎,被用来创建实时例子动画如:烟雾,火,雨等等这些效果. CAEm ...
- React Native-目前最火的前端技术?
做为一名产品经理,你是否遇到过这样的窘境,“帮我把字体调成 16号呗,颜色变成 #FFFF00FF,老大说这里最好改一下”,作为一名 app 的开发只能无奈但心里窃喜的告诉你,“只能等下个版本了,必须 ...
- s3c2440栈分配情况(fl2440裸机 stack)
//2440INIT.S ;The location of stacks UserStack EQU (_STACK_BASEADDRESS-0x3800) ;0x33ff4800 ~ SVCStac ...
- BZOJ 1827: [Usaco2010 Mar]gather 奶牛大集会( dp + dfs )
选取任意一个点为root , size[ x ] 表示以 x 为根的子树的奶牛数 , dp一次计算出size[ ] && 选 root 为集会地点的不方便程度 . 考虑集会地点由 x ...