pascal 题目

[复制链接]
查看11 | 回复1 | 2011-6-11 21:16:16 | 显示全部楼层 |阅读模式
记得长除法吗?我们知道只有当出现了曾经出现过的余数时,小数部分才会出现重复。重复的部分就是自从我们上次见到同样的余数之后计算出的部分。 我们先读入并打印整数部分。接下来,我们对剩下的真分数部分进行长除直到我们发现了重复的余数或余数变为0。如果我们发现了重复的余数,即出现了循环节,就分别恰当地打印重复的部分和不重复的部分。如果余数变为0,即已经除尽,就打印整个小数部分。如果小数位根本没有被生成,那么打印一个0就是正确答案了。下面是另一个更加优美的解法,来自Anatoly Preygel。 计算循环开始前的小数位数,这样你甚至无需保存各个小数位和余数,程序的空间花费将大幅减小,而运行速度也能有所提高。我们知道2和5的幂是仅有的两种不导致循环的数...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行