A41023. 三进制小数
填空题
中等
知识点
题目描述
三进制小数
题目描述
你的任务呢,是将一个有理数转换成三进制小数。“什么是三进制小数呢?”你一定会问,这很明白,就是以三为基(二进制数以2为基,而十进制数则以10为基)的小数。
输入格式
有理数的值都是在0与1之间的,每个有理数都由一个分子和一个分母表示,分子与分母之间隔着一个斜杠。有理数的个数不会超过1000个。
输出格式
输出格式见样本输出,它是以小数点开头的具有10位精度的3进制数。
样例输入
1/3
1/4
1/6
7/8
样例输出
.1000000000
.0202020202
.0111111111
.2121212122
参考答案
#include<stdio.h>
void output_three(double num);
int jinzhi = 3;
int main()
{
int x , y ;
double num ;
while(scanf("%d/%d",&x,&y) != EOF)
{
num = 1.0 * x / y;
output_three(num);
}
return 0;
}
void output_three(double num)
{
int A[11] = { 0 };
int i , j;
for(i = 0 ; i < 11 ; i++)
{
num *= jinzhi;
A[i] = (int)num;
num -= A[i];
}
if(A[10] >= 1.0 * jinzhi / 2)
A[9]++;
for(j = 9 ; j > 0 ; j--)
{
if(A[j] == 3)
{
A[j-1]++;
A[j] = 0;
}
}
printf(".");
for(i = 0 ; i < 10 ; i++)
printf("%d" , A[i]);
printf("\n");
return ;
}
上一题
下一题