当前位置: 首页 > news >正文

Cantor表(刷题)(C语言)

个人博客主页:https://blog.csdn.net/2301_79293429?type=blog
专栏:https://blog.csdn.net/2301_79293429/category_12545690.html

题目描述

现代数学的著名证明之一是 Georg Cantor 证明了有理数是可枚举的。他是用下面这一张表来证明这一命题的:

我们以 Z 字形给上表的每一项编号。第一项是 1/11/1,然后是 1/21/2,2/12/1,3/13/1,2/22/2,…

输入格式

整数N(1≤N≤10^7)。

输出格式

表中的第 N 项。

输入输出样例

输入 

7

输出 

1/4

题目链接: 记录详情 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

题目分析:

将题目中的图像写为易观察的形式:

/*        1/1

        1/2   2/1

   3/1     2/2    1/3  

设最上面一行为第1行,本题用i表示,

第i行的分子分母之和为i+1,除了第一行,偶数行的分子从1开始,奇数行从i开始

*/

AC代码:

int main()
{int n;scanf("%d", &n);if (n == 1)printf("1/1");else{int i = 0, j = 1, sum = 0;for (i = 1;; i++){sum += j++;if (sum >= n)break;}sum -= i;/*前面几行的总个数*/if (i % 2 == 1)/*奇数行*/{j = 0;if (sum == n - 1)printf("%d/%d", i, 1);else{int h = i - (n - sum) + 1;/*分子*/i = n - sum;/*分母*/printf("%d/%d", h, i);}}else{j = 0;if (sum == n - 1)printf("%d/%d", 1, i);else{int h = i - (n - sum) + 1;/*分母*/i = n - sum;/*分子*/printf("%d/%d", i, h);}}}return 0;
}

祝大家题题AC啦,天天只想做个WA梦~

http://www.lryc.cn/news/288073.html

相关文章:

  • linux install nvm
  • HTML 炫酷进度条
  • Windows10上使Git Bash支持rsync命令操作步骤
  • rust for循环里的所有权 - into_iter / iter / iter_mut
  • GitHub README-Template.md - README.md 模板
  • 【文本到上下文 #6】Word2Vec、GloVe 和 FastText
  • yolov5 opencv dnn部署自己的模型
  • Cortex-M4处理器 电源管理
  • Linux 驱动开发基础知识——编写LED驱动程序(三)
  • YOLOv8 视频识别
  • elementplus Dialog 对话框设置距离页面顶部的距离
  • 便捷接口调测:API 开发工具大比拼 | 开源专题 No.62
  • openssl3.2/test/certs - 008 - root-nonca trust variants: +serverAuth +anyEKU
  • cg插画设计行业怎么样,如何学习插画设计
  • 1.25学习总结
  • C语言每日一题(48)回文链表
  • 提高代码效率的5个Python内存优化技巧
  • 基于一款热门大屏可视化设计器使用教程
  • 梯度下降法、模拟训练、拟合二次曲线、最小二乘法、MSELoss、拟合:f(x)=ax^2+bx+c
  • Web3.0投票如何做到公平公正且不泄露个人隐私
  • 灰度图像的自动阈值分割
  • 利用Maven获取jar包
  • 将vue组件发布成npm包
  • 江科大STM32 中
  • vue+draggable+el-upload上传图片拖拽重排方法
  • 微信的新版canvas绘制的图案发生变形和偏移的问题
  • [ACM学习] 进制转换
  • redis + 拦截器 :防止数据重复提交
  • 如何进行H.265视频播放器EasyPlayer.js的中性化设置?
  • Ubuntu22.04安装4090显卡驱动