测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

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 ; }
上一题 下一题