摘要

题目链接 难度等级 完成状态 完成分数 最后编辑时间 失误原因(初次提交分数)
Cantor表 ★☆☆☆☆ 答案正确 100 2014/08/16 18:32:34 不等号取等问题(80)

题意

输出Cantor表中的第N项。

题解

好像经常在数学填空压轴遇到这种题。找规律呀。 很显然从左上到右下,第i斜行有i个数,然后容易得到第N个数在第line斜行,前(line-1)斜行共有sum个数,还剩下多少个数(require)。

显示/移除行号
  1. for(line=0;sum<n;sum+=++line);
  2. sum-=line;
  3. require=n-sum;

观察容易得到i为奇数的时候从n/1开始,为偶数的时候从1/n开始。分奇偶讨论容易得到最后的分数形式。

错误分析

第一次写的时候第5行写作了sum<=n,导致恰好行末的时候会出现p/0的情况,WA80分。

代码

1083.cpp代码已折叠
展开折叠内容
显示/移除行号
  1. #include<cstdio>
  2. int main(){
  3. int n,line=0,sum=0,require;
  4. scanf("%d",&n);
  5. for(;sum<n;sum+=++line);
  6. sum-=line;
  7. require=n-sum;
  8. if(line%2)
  9. printf("%d/%d",line-require+1,require);
  10. else
  11. printf("%d/%d",require,line-require+1);
  12. return 0;
  13. }

链接

著作权声明[编辑]

关于[编辑]