pascal找分数.docVIP

  • 53
  • 0
  • 约小于1千字
  • 约 3页
  • 2017-06-08 发布于重庆
  • 举报
pascal找分数

找分数 文件名zfs.pas 【试题描述】 有一张分数表,其中的每一项是以Z字形先后次序按某种规律形成的,每一项编号和对应的分数如下表和下图所示: 编号 1 2 3 4 5 6 7 … 分数 1/1 1/2 2/1 3/1 2/2 1/3 1/4 … 请根据表中规律,对于输入的整数N 1≤N≤20000 输出对应的第N项分数. 【输入描述】 输入文件(zfs.in) 只有一行,有一个正整数N。 【输出描述】 输出文件(zfs.out) 只有一行,有一个分数,分子和分母间用“/”号分隔。 【输入样例】 8 【输出样例】 2/3 由于N的范围很大,如果一个个举的话,就算不超时也没什么意思,思考的乐趣少了。 说到底,我们只需找出分数线左右两边的数与N的关系,这是一个纯粹的数学问题。 而观察到每一条斜线上的数,左右之和都相等,因此我们只需求出一个就行了(左边或右边),另一个就用 “和减左边”或“和减右边”得到。先来搞定 左+右的和sum 与N的关系: 关于a的那个式子来之不易…… 参考程序: var N,a,S,L,F:longint; begin readln N ; a: trunc sqrt 2*N ; //这里a赋的是近似值,准确值会在下一个while语句中求得; while true do begin if a* a-1 div 2 N and a*

文档评论(0)

1亿VIP精品文档

相关文档