原题链接:https://www.luogu.com.cn/problem/P1014

Cantor表

题目描述

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

1/11/11/1 , 1/21/21/2 , 1/31/31/3 , 1/41/41/4, 1/51/51/5, …

2/12/12/1 , 2/22/22/2 , 2/32/32/3, 2/42/42/4, …

3/13/13/1 , 3/23/23/2, 3/33/33/3, …

4/14/14/1, 4/24/24/2, …

5/15/15/1, …

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

输入格式

整数NNN(1≤N≤1071 \leq N \leq 10^71≤N≤107)。

输出格式

表中的第 NNN 项。

输入输出样例
输入 #1

7

输出 #1

1/4

题解

显然,每斜排的长度依次递增,我们可以枚举最小的满足i×(i+1)≥Ni\times (i+1)\ge Ni×(i+1)≥N的iii就能找到第NNN个数在第iii排,再根据同一排的分数分子分母之和为i+1i+1i+1,并判断一下iii的奇偶性,即可找到第NNN个数。

代码

为了编写这个程序,我们需要先用forforfor循环枚举1∼N1\sim N1∼N的所有整数找到iii(事实上可以直接在N\sqrt{N}N​附近找,但是为了练习循环语句,姑且用这个不那么快的办法)。

PythonPythonPython的forforfor循环可以直接枚举一个集合中的元素,而不是像CCC++那样先枚举下标,再通过下标访问对应元素。当然,在这里我们并不需要这么复杂,直接枚举数就行了,可以用函数range(start,end,step)range(start,end,step)range(start,end,step)返回的一个数组来规定一个枚举的范围,startstartstart为枚举的起点(不填时默认为000),endendend是必填参数,为枚举的终点+1+1+1(即range(3)=[0,1,2]range(3)=[0,1,2]range(3)=[0,1,2]),而stepstepstep为数之间的间隔,当我们需要使用stepstepstep参数时,必须将startstartstart参数也加上,否则range(end,step)range(end,step)range(end,step)函数会返回一个end∼stepend\sim stepend∼step的数组。

判断语句与CCC++区别不大,但是习惯CCC++而又初学PythonPythonPython的人(比如我)很容易漏掉冒号。

PythonPythonPython的输出函数也非常强大,它可以直接以对应的数据类型输出数据而不需要像CCC++那样让编程者通过%d%c这样的符号来人为规定。同时,它还可以设置间隔符sepsepsep,默认间隔符为空格,如果不想要间隔,可以设为sep='',即间隔符为空,设置其他间隔符类似,如sep=','

代码
n=int(input())
for i in range(1,n):if i*(i+1)/2>=n:break
a=int(n-i*(i-1)/2)
if i%2==0:print(a,'/',i+1-a)
else:print(i+1-a,'/',a,sep='')

Python的输出、判断、循环函数:Luogu1014Cantor表相关推荐

  1. 九九乘法表python语言编程软件_编写Python程序,输出如下的九九乘法表_学小易找答案...

    [其它]写出下图的梯形图程序对应的语句表 (26.0分) [简答题]PLC一般的编程语言有几种?分别是什么? (5.0分) [其它]定义一个getMax函数,返回三个数(从键盘输入的整数)中的最大值. ...

  2. python基础课程2(看代码看注释)--条件判断|循环|函数|生成器|类

    ##人生苦短,我用python ##课程内容 #条件判断 #循环 #类:简单介绍类的用法##条件判断 #if condiction:# dosomething #else: # dosomething ...

  3. python格式化输出以及format()函数

    1.格式化输出 # 根据我们用户的需求,在指定的位置输出内容 """ %s 格式化输出字符串 str %d 格式化输出有符号的整数 %f 格式化输出浮点数 "& ...

  4. python用循环结构求平均值_有python的输出问题;循环总数和平均值

    我的嵌套循环有一些输出问题,通常我会使用break在代码中添加一些行或print() 当我在我的代码中使用print()时,我的输出看起来像是在新行上输入总数而不是我想要的 以下是我当前输出的图片,我 ...

  5. 07_Python的控制判断循环语句1(if判断for循环)_Python编程之路

    Python的数据类型在前几节我们都简单的一一介绍了,接下来我们就要讲到Python的控制判断循环语句 在现实编程中,我们往往要利用计算机帮我们做大量重复计算的工作,在这样的情况下,需要机器能对某个条 ...

  6. python条件输出_python基础(二)条件判断、循环、格式化输出

    继续上一篇,今天主要总结一下条件判断.循环.格式化输出 一.条件判断 python中条件判断使用if else来判断,多分支的话使用if elif ... else,也就是如果怎么怎么样就怎么怎么样, ...

  7. Python中的判断语句及循环

    Python中的判断语句及循环 文章目录 Python中的判断语句及循环 一.判断(if)语句 01. 开发中的应用场景 程序中的判断 判断的定义 02. if 语句体验 2.1 if 判断语句基本语 ...

  8. Python教程学习简记1--Python数据类型和变量 字符串和编码 list和tuple 条件判断 循环 dict和set

    本文主要是学习Python基础: Python数据类型和变量 字符串和编码 list和tuple 条件判断 循环 dict和set 本文根据廖雪峰的官方网站-Python教程,认真学习,一步一步实操并 ...

  9. Python的逻辑判断和循环 || 打印九九乘法表

    Python的逻辑判断和循环 1.if elif else条件判断 计算机之所以能做很多自动化的任务,因为它可以自己做条件判断. if <条件判断1>: <执行1> elif ...

  10. python中len和range函数_for循环len函数和range函数的运用

    函数:len() 作用:返回字符串.列表.字典.元组等长度 语法:len(str) 参数: str:要计算的字符串.列表.字典.元组等 返回值:字符串.列表.字典.元组等元素的长度 实例 1.计算字符 ...

最新文章

  1. 移动端布局规范-固定页头页尾-中间随高度滑动
  2. 北理工校友发明文言文“填词大师”,断句、造词都能做,高考文言文满分靠它了...
  3. vue在js上处理后台返回的数组_vuejs 根据后台返回数组,渲染图片路径
  4. AI理论知识基础(26)-相对熵,KL散度
  5. vlc集成c#_C#WinForm程序调用VLC异常
  6. T2 Funcin T1,out T2(T1 arg)
  7. Yann LeCun送你的春节大礼:免费学习全部2020春季深度学习课程
  8. jsp之jsp内置对象
  9. Eureka是干什么的?
  10. 来自H3C的降维打击:H3C BX54鲸路由评测体验
  11. 《德鲁克管理思想精要》读书笔记
  12. ORACLE账户提示EXPIRED(GRACE)问题解决
  13. 百度地图截取指定区域坐标(可伸拉标记点)
  14. gbd调试的基本使用方法
  15. 51单片机数码管计数器
  16. 曾善美一女大学生的创业之路
  17. 基于matlab的语音信号去噪毕业论文,MATLAB的FIR数字滤波器语音信号的去噪研究和仿真...
  18. FPGA(九)RTL代码之五(基本电路设计2)
  19. VUE 字符串拼接 各种拼接
  20. aardio利用sunny中间件实现只显示网页部分内容

热门文章

  1. TopCoder交题方法
  2. Modbus PLC攻击分析:Python和Mbtget读写PLC
  3. Idea和Eclipse快捷键对比
  4. matlab 包落,怎样在MATLAB中划出一个函数的包络线?
  5. 攻防世界 web2 write up
  6. 架构模式: API网关
  7. 【CC评网】2013.第44周 把握每天的第一个小时
  8. 【Silverlight】Bing Maps学习系列(一):开发前的准备工作
  9. C# 寻找数组中的最大子数组
  10. spring 事务源码分析(四)传播机制总览