三进制小数

2017-12-05 19:33:15来源:CSDN作者:Soul_97人点击

分享

1198: 三进制小数

描述

题目描述:

你的任务呢,是将一个有理数转换成三进制小数。“什么是三进制小数呢?”你一定会问,这很明白,就是以三为基(二进制数以2为基,而十进制数则以10为基)的小数。 

输入:

有理数的值都是在0与1之间的,每个有理数都由一个分子和一个分母表示,分子与分母之间隔着一个斜杠。有理数的个数不会超过1000个。

输出:

输出格式见样本输出,它是以小数点开头的具有10位精度的3进制数。 

样例输入
1/3
1/4
1/6
7/8
样例输出
.1000000000
.0202020202
.0111111111
.2121212122
如题,菜博主没看懂。。
搬了一套代码理解一下
#include <stdio.h> 
#include <stdio.h> int main() {    int a, b;    double ans;    int ans_int[12];    int i;    while (scanf("%d/%d", &a, &b) != EOF) {        ans = (double) a / b;        printf(".");        for (i = 0; i <= 10; i++) {            ans *= 3;            ans_int[i] = (int) ans;            ans -= ans_int[i];        }        if (ans_int[10] == 2) {            ans_int[9]++;        }        for (i = 9; i >= 0; i--) {            if (ans_int[i] == 3) {                    ans_int[i] = 0;                ans_int[i - 1]++;            }        }        for (i = 0; i < 10; i++) {            printf("%d", ans_int[i]);        }        printf("/n");    }    return 0;}


最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台