我们的思路大概是这样
如果输入数据是0.d1d2d3d4
那么计算的方法就是((((d4/8)+d3)/8+d2)/8+d1)/8 从最高位往最低位一位一位计算
王拓发给大家的福利[2元]
Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other)
Total Submission(s) : 14 Accepted Submission(s) : 6
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
王拓喜欢八进制,完成此题的同学,王拓将发2元的红包福利。问题是:
王拓给出一个八进制的小数,你将它转换为 10 进制小数。
王拓给出一个八进制的小数,你将它转换为 10 进制小数。
Input
每行一个八进制的小数
Output
每行输出一个对应的十进制的小数
Sample Input
0.75 0.0001 0.01234567
Sample Output
0.953125 0.000244140625 0.020408093929290771484375
Author
#include <iostream>
#include <string.h>
#include <stdio.h>
using namespace std;
char str1[1010], temp[1010];
int main()
{
while(cin>>str1)
{
memset(temp,0,sizeof(temp));
int num,tmp,k=0,length = strlen(str1);
int j;
for(int i = length - 1; i > 1 ; i--)
{
num = str1[i]-'0';
for( j = 0;j<k||num!=0;j++ )
{
int z ;
if(j<k)
z = temp[j]-'0';
else
z = 0;
tmp = num*10+z;
temp[j] = tmp/8 +'0';
num = tmp%8;
}
k = j;
}
printf("0.%s\n",temp);
}
return 0;
}