博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
usaco题目分享——Fractions to Decimals
阅读量:7212 次
发布时间:2019-06-29

本文共 2430 字,大约阅读时间需要 8 分钟。

  

Fractions to Decimals

Write a program that will accept a fraction of the form N/D, where N is the numerator and D is the denominator and print the decimal representation. If the decimal representation has a repeating sequence of digits, indicate the sequence by enclosing it in brackets. For example, 1/3 = .33333333...is denoted as 0.(3), and 41/333 = 0.123123123...is denoted as 0.(123). Use xxx.0 to denote an integer. Typical conversions are:

1/3     =  0.(3)22/5    =  4.41/7     =  0.(142857)2/2     =  1.03/8     =  0.37545/56   =  0.803(571428)

PROGRAM NAME: fracdec

INPUT FORMAT

A single line with two space separated integers, N and D, 1 <= N,D <= 100000.

SAMPLE INPUT (file fracdec.in)

45 56

OUTPUT FORMAT

The decimal expansion, as detailed above. If the expansion exceeds 76 characters in length, print it on multiple lines with 76 characters per line.

SAMPLE OUTPUT (file fracdec.out)

0.803(571428) 就是这样一道比较简单的题目,是usaco上第二章的最后一道题目。(因为最近老师布置了usaco上的题目......如果看英文有问题,可以去nocow上看) 简单来说,这道题目就是一道类似高精小数的题目,只需要模拟除法就可以了。 但是为什么要推荐呢?因为特判和特殊情况很多......还有就是76个字符提一行。 可以试试自己做题考虑是否周到,能一次AC是很不容易的...... 下面贴代码(我的代码很丑,自己参考)
#include
#include
#include
#include
#include
#include
using namespace std;int n,m,zhen;map
f;struct like{ int w[100005];}ans;int wa[10005],wo;void chu(int x,int y){ int i,j; zhen=x/y; x=x%y; f[x]=1; int t=1,anss=0; while(x!=0) { t++; x=x*10; ans.w[0]++; ans.w[ans.w[0]]=x/y; x=x%y; if(f[x]!=0) { anss=f[x]; break; } f[x]=t; } int p=0; while(zhen>0) { wo++; wa[wo]=zhen%10; zhen/=10; } for(i=wo;i>=1;--i) { printf("%d",wa[i]); p++; if(p==76) p=0,printf("\n"); } if(p==0) printf("0"),p++; printf(".");p++; if(p==76) p=0,printf("\n"); if(t==1) { printf("0"); printf("\n"); return ; } if(anss==0) { for(i=1;i<=ans.w[0];++i) { printf("%d",ans.w[i]); p++; if(p==76) p=0,printf("\n"); } if(p!=0) printf("\n"); return ; } for(i=1;i<=anss-1;++i) { printf("%d",ans.w[i]); p++; if(p==76) p=0,printf("\n"); } printf("(");p++; if(p==76) p=0,printf("\n"); for(i=anss;i<=t-1;++i) { printf("%d",ans.w[i]); p++; if(p==76) p=0,printf("\n"); } printf(")");p++; printf("\n");}int main(){ freopen("fracdec.in","r",stdin); freopen("fracdec.out","w",stdout); int i,j; scanf("%d%d",&n,&m); for(i=1;i<=10005;++i) ans.w[i]=-1; chu(n,m); return 0;}

 

转载于:https://www.cnblogs.com/hhhhhhhhhh/p/5154721.html

你可能感兴趣的文章
Redis介绍及Jedis基础操作
查看>>
20061218: 多个任务管理器
查看>>
WCF 可靠会话
查看>>
vim+makefile入门编辑,编译,差错实例
查看>>
Python之基础练习题
查看>>
AC日记——回文子串 openjudge 1.7 34
查看>>
易买网总结
查看>>
C#导入Excel报错问题。
查看>>
网站前端性能优化
查看>>
课后作业
查看>>
C#反射学习
查看>>
实验二 直线DDA生成算法的GDI实现
查看>>
迭代器与泛型for
查看>>
在idea中用tomcat远程部署调试
查看>>
HGE引擎改进
查看>>
存储过程执行失败与sql668n
查看>>
Android面试题3之描写叙述下Android的系统架构
查看>>
2014-7-20 谁还认得这几本书?
查看>>
基于django搭建网站
查看>>
c++ 循环程序的作业,2017年10月10日作业题。
查看>>