poj 1131进制转换

2023-05-16

//POJ 1131 Octal Fractions 任意进制之间小数的转换 //给定一个八进制的小数题目要求你把它转换为十进制小数, //转换后小数的位数是转换前八进制小数位数的3倍且不输出末尾无意义的零(即后置零). // 我采用的方法是乘10然后对8取整(现在假设将p进制的小数转换为n进制,同样采用乘n取整:), //每转换一位,都必须从最低位s[len-1]开始至小数的最高位(即小数点后的一位), //每次计算积 g=a[j]*n+k(其中k为下一位积的进位),本位进位数 k=g/p, //积在本位存入 s[j]=g%p;最后的整数k作为转换的一位存放于转换结果字符串中。 //我其实很恶心这种高精度的,,不过也列出了一种JAVA的写法。。看来JAVA要好好学点。。 #include<iostream> #include<string> #include<cstdlib> #include<algorithm> using namespace std; char s1[20],s2[50],s3[20]; int main() { int i,t,j,k,g,l,len;; while(scanf("%s",s1)!=EOF) { l=strlen(s1); strcpy(s3,s1); len=3*(l-2); t=0; s2[0]='0'; s2[1]='.'; j=2; while(t<len) { k=0; t++; for(i=l-1;i>1;i--) //从最低位开始采用乘10对8取整 { g=(s1[i]-'0')*10+k; k=g/8; s1[i]=g%8+'0'; } s2[j]=k+'0'; j++; } s2[j]='\0'; printf("%s [8] = ",s3); j--; while(s2[j]=='0') //找出最后一个不为0的数的位置 j--; for(i=0;i<=j;i++) //去掉后置0进行的输出 printf("%c",s2[i]); printf(" [10]\n"); } system("pause"); return 0; } //在上述基础上写了一个将p进制的小数转换为n进制小数的程序(2到16进制之间小数的数制转换) /* #include<iostream> #include<string> #include<cstdlib> #include<algorithm> using namespace std; string ss="0123456789ABCDEF"; string change(string s,int p,int n) { int i,t,k,g,l,pos,len; string str; l=s.size(); pos=s.find("."); len=3*(l-pos-1); //将p进制的小数转换为n进制的小数且转换后的小数位数为转换前的三倍,但不输出后置零 t=0; str+="0."; while(t<len) { k=0; t++; for(i=l-1;i>pos;i--) //乘n对p取整 { g=(s[i]-'0')*n+k; k=int(g/p); s[i]=g%p+'0'; } str+=ss.substr(k,1); } return str; } int main() { string s1,s2; int p,n,i,j; while(1) { cin>>s1; cin>>p>>n; s2=change(s1,p,n); i=s2.size()-1; while(s2[i]=='0') i--; cout<<s1<<" ["<<p<<"] = "; for(j=0;j<=i;j++) cout<<s2[j]; cout<<" ["<<n<<"]"<<endl; } system("pause"); return 0; }*/


Java

//用到的方法: //1.BigDecimal.add(BigDecimal); //2.BigDecimal.divide(BigDecimal); view plain import java.math.BigDecimal; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner cin=new Scanner(System.in); while(cin.hasNext()) { String str=cin.next(); BigDecimal Fin=new BigDecimal(0); for(int i=2;i<str.length();i++) { BigDecimal sub=new BigDecimal((int)str.charAt(i)-48); BigDecimal mom=new BigDecimal(8); Fin=Fin.add(sub.divide(mom.pow(i-1))); } System.out.println(str+" [8] = "+Fin+" [10]"); } } } */

转自http://www.cnblogs.com/Mu-Tou/archive/2011/08/10/2133875.html


转载于:https://www.cnblogs.com/moiyer/archive/2011/11/09/2316154.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

poj 1131进制转换 的相关文章

  • POJ 题目1105 S-Trees(二叉树模拟)

    S Trees Time Limit 1000MS Memory Limit 10000KTotal Submissions 1499 Accepted 807 Description A Strange Tree S tree over
  • HJ5-进制转换

    HJ5 进制转换 描述 写出一个程序 xff0c 接受一个十六进制的数 xff0c 输出该数值的十进制表示 数据范围 xff1a 保证结果在 1 n 2 31 1 输入描述 xff1a 输入一个十六进制的数值字符串 输出描述 xff1a 输
  • POJ--2709:Painter (贪心)

    1 题目源地址 http poj org problem id 2709 2 解题思路 每个颜料盒可能有3 12种颜色 其中每种颜色50ml 任意三种颜色 假设每种颜色Xml 可以混合出Xml的灰色 现在给出所需颜色的种数N 给出N个值分别
  • "蓝桥杯“基础练习:十六进制转八进制

    问题描述 给定n个十六进制正整数 输出它们对应的八进制数 输入格式 输入的第一行为一个正整数n 1 lt n lt 10 接下来n行 每行一个由0 9 大写字母A F组成的字符串 表示要转换的十六进制正整数 每个十六进制数长度不超过1000
  • POJ 2479 Dual Core CPU|网络流|dinic模版

    问题描述 总时间限制 15000ms 单个测试点时间限制 5000ms 内存限制 65536kB 描述 As more and more computers are equipped with dual core CPU SetagLilb
  • Basic Level 1022 D进制的A+B (20分)

    题目 输入两个非负10进制整数 A A A和 B 2 30
  • c/c++进制转换方法汇总(含全部代码)

    进制转换方法汇总表 原进制 转换进制 方法1 方法2 方法3 方法4 十进制 二进制 bitset指定格式输出 除留余数法 itoa 十进制 八进制 oct o指定格式输出 流 除留余数法 itoa 十进制 十六进制 hex x指定格式输出
  • Leetcode168. Excel表列名称

    力扣 LeetCode 官网 全球极客挚爱的技术成长平台 题解 力扣 LeetCode 官网 全球极客挚爱的技术成长平台 代码如下 class Solution public String convertToTitle int column
  • POJ--1159:Palindrome (DP求最长公共子序列)

    1 题目源地址 http poj org problem id 1159 2 题目大意 题目就是给你一个字符串 问你添加最少几个字符之后字符串变成回文字符串 求给出的字符串和逆序的字符串的最长公共子序列 用总长度减去这个最长公共子序列的长度
  • poj 2155 Matrix

    Problem poj org problem id 2155 vjudge net contest 146952 problem A Meaning 一个 N N 的矩阵 A 初始时全部值为 0 有两种操作 1 C x1 y1 x2 y2
  • POJ 275 Drainage Ditches|网络流|dinic模版

    问题描述 总时间限制 1000ms内存限制 65536kB 描述 Every time it rains on Farmer John s fields a pond forms over Bessie s favorite clover
  • Bailian3709 2进制转化为3进制【进制转换】

    题目链接 2进制转化为3进制 总时间限制 1000ms 内存限制 65536kB 描述 输入一个2进制的数 要求输出该2进制数的3进制表示 在3进制的表示中 只有0 1 2三种符号 输入 第1行是测试数据的组数n 后面跟着n行输入 每组测试
  • poj1240

    本题为已知M 叉树的前序遍历与后序遍历 要求给出对应树有多少种可能 与poj2255类似 只要划分出子树 就把问题规模缩小了 然后就可以递归 目前只会写递归 M叉树的前序遍历为 根 子树1 子树2 子树K K lt M M叉树的后序遍历为
  • poj 2155 Matrix

    Problem poj org problem id 2155 vjudge net contest 146952 problem A Referencd www cnblogs com gj Acit p 3258880 html Mea
  • c语言2进制转3进制

    保存答案的 要求二进制满足最多64位 网上的答案都不对 听同学讲用了 unsigned long long 和 运算左移 方法一 include
  • c 十进制数转十六进制

    有3种方式实现 其中两种是使用系统函数 另一种是直接自己编写 使用系统函数实现要加入 include
  • 十进制数转8421BCD码

    十进制数转8421BCD码就是把十进制数字每一位都用4个二进制位所组成的数字代替 十进制数 8421码 余3码 0 0000 0011 1 0001 0100 2 0010 0101 3 0011 0110 4 0100 0111 5 01
  • C++任意数字类型转 2进制、8进制、16进制

    C 任意数字类型转 2进制 8进制 16进制 平时我们在写程序的过程中会经常碰见进制转换的操作 偶尔写一次还好每次写 我们都又要重新定义函数进行转换 在这里博主就分享一下我自己编写的一个进制转换的方法吧 也比较通用 如没有耐心可以直接跳过思
  • poj1463

    1
  • PHP的进制转换与字符串的编码解码

    目录 一 进制转换函数 dechex hexdec decbin bindec base convert 二 编码解码函数 bin2hex hex2bin pack 和 unpack 三 字符串类型详解 PHP字符串 从PHP 5 2 1版

随机推荐