NEUQOJ 1198: 三进制小数
来源:互联网 发布:金石软件win10 编辑:程序博客网 时间:2024/05/21 06:33
题目描述:
你的任务呢,是将一个有理数转换成三进制小数。“什么是三进制小数呢?”你一定会问,这很明白,就是以三为基(二进制数以2为基,而十进制数则以10为基)的小数。
输入:
有理数的值都是在0与1之间的,每个有理数都由一个分子和一个分母表示,分子与分母之间隔着一个斜杠。有理数的个数不会超过1000个。
输出:
输出格式见样本输出,它是以小数点开头的具有10位精度的3进制数。
样例输入
1/3
1/4
1/6
7/8
样例输出
.1000000000
.0202020202
.2121212122
//讲个笑话我样例没过
WA:
#include <iostream>#include <cmath>#include <algorithm>#include <iomanip>#include <cstdio>using namespace std;/*没考虑进位*/int main(){ int a,b; while(cin>>a) { getchar(); cin>>b; double ans=1.0*a/b; int pointans[11]; cout<<"."; for(int i=1;i<=10;i++) { ans*=3; cout<<floor(ans); ans-=floor(ans); } cout<<endl; } return 0;}
AC:
#include <iostream>#include <cmath>#include <algorithm>#include <iomanip>#include <cstdio>using namespace std;/*乘3取整*/int main(){ int a,b; while(cin>>a) { getchar(); cin>>b; double ans=1.0*a/b;//float精度不够 int pointans[11]; cout<<"."; for(int i=0;i<=10;i++) { ans*=3; pointans[i]=floor(ans);//向下取整 ans-=floor(ans); } if(pointans[10]>=2) { pointans[9]++;//判断末尾是否需要进位 } for(int i=9;i>=0;i--) { if(pointans[i]==3)//判断进位以3为基 { pointans[i]=0; pointans[i-1]++; } } for(int i=0;i<=9;i++) { cout<<pointans[i]; } cout<<endl; } return 0;}
阅读全文
0 0
- NEUQOJ 1198: 三进制小数
- NEUQOJ:1061
- NEUQOJ:1059
- 三进制小数
- NEUQOJ:1204众数问题
- NEUQOJ:1263生日日数
- NEUQOJ:1123 排序
- NEUQOJ:1166舍罕王的失算
- NEUQOJ:1365 弟弟的作业
- NEUQOJ:【C语言训练】阿姆斯特朗数
- NEUQOJ:1591: 矩阵转置
- zzuoj1081 三进制小数
- ZZUOJ - 1081 - 三进制小数
- 1069: 三进制小数
- 三进制小数 oj132
- 小数
- NEUQOJ:1104 3n+1数链
- NEUQOJ 1495 田鼠看热闹(Ⅰ)(枚举 + 模拟)
- 第十二周项目四:验证算法(4)
- 记一次iOS自动化打包走过的坑-关于React Native-iOS项目
- String,StringBuffer,StringBuilder的区别
- 程序员的数学(一)
- spring AOP的实现原理(动态代理)
- NEUQOJ 1198: 三进制小数
- 管理 Java 类路径
- hdu 6222
- org.springframework.validation.BindException:
- 模拟实现list
- 分割树叶(数字图像处理)
- OpenCV入门学习之读取usb摄像头图像,实时显示
- C语言队列之链队列
- ORACLE 查看用户会话,强制结束,并删除用户.