1. 我们先引入三角形数的概念:
>定数目的点或圆在等距离的排列下可以形成一个等边三角形,这样的数被称为三角形数。

>古希腊著名科学家毕达哥拉斯把数1,3,6,10,15,21……这些数量的(石子),都可以排成三角形,像这样的数称为三角形数。

>【百度百科】三角形数

2. 我们来看看这个表:

3. 我们可以发现,设
$x_1 < n \leqslant x_2$(其$x_1$、$x_2$均为三角形数)

即有$\dfrac{p(p-1)}{2} < n \leqslant \dfrac{p(p+1)}{2}$,其中$p \in Z$

也就是 $\begin{cases}p^2+p\geqslant2n……(1)\\p^2-p<2n……(2)\end{cases}$

对于(1),我们有$p^2 + p + \dfrac{1}{4} \geqslant 2n + \dfrac{1}{4}$

配方得:

$(p+\dfrac{1}{2})^2 \geqslant 2n+\dfrac{1}{4}$

$\therefore p+\dfrac{1}{2}\geqslant \sqrt{2n+\dfrac{1}{4}}$ 或 $p+\dfrac{1}{2} \leqslant-\sqrt{2n+\dfrac{1}{4}}$

$\therefore p\geqslant \sqrt{2n+\dfrac{1}{4}}-\dfrac{1}{2}$ 或 $p\leqslant-\sqrt{2n+\dfrac{1}{4}}-\dfrac{1}{2}$

对于(2),我们有$p^2 - p + \dfrac{1}{4} < 2n + \dfrac{1}{4}$

配方得:

$(p-\dfrac{1}{2})^2 < 2n+\dfrac{1}{4}$

$\therefore-\sqrt{2n+\dfrac{1}{4}}<p-\dfrac{1}{2}<\sqrt{2n+\dfrac{1}{4}}$

$\therefore-\sqrt{2n+\dfrac{1}{4}}+\dfrac{1}{2}<p<\sqrt{2n+\dfrac{1}{4}}+\dfrac{1}{2}$

为了方便,我们设$t=\sqrt{2n+\dfrac{1}{4}}$

$\therefore$联立得:$\begin{cases}p\geqslant t-\dfrac{1}{2} || p\leqslant- t - \dfrac{1}{2} \\-t+\dfrac{1}{2}<p<t+\dfrac{1}{2}\end{cases}$

解得:$t-\dfrac{1}{2}\leqslant p < t+ \dfrac{1}{2}$

又$\because t- \dfrac{1}{2}$到$t+\dfrac{1}{2}$中只可能有1个整数

$\therefore p= \lceil t- \dfrac{1}{2} \rceil$

4. 我们再来找规律

我们再设$\Delta s=x_2-n$

所以

当p为偶数时:要求的结果$\dfrac{p-\Delta s}{1+\Delta s}=\dfrac{p-x_2+n}{1+ x_2-n}$

化简后

分子是:$p-\dfrac{p(p+1)}{2}+n$

分母是:$1+\dfrac{p(p+1)}{2}-n$

当p为奇数时:要求的结果
$\dfrac{1+\Delta s}{p-\Delta s}=\dfrac{1+ x_2-n}{p-x_2+n}$

化简后

分子是:$1+\dfrac{p(p+1)}{2}-n$

分母是:$p-\dfrac{p(p+1)}{2}+n$

所以我们就有了这个代码:

 #include <cstdio>
#include <iostream>
#include <cstring>
#include <cmath>
#include <cctype>
#include <algorithm>
#include <cstdlib> using namespace std; double t;
int p, n;
int fenzi, fenmu; int main()
{
scanf("%d", &n);
t = sqrt( * n + 0.25);
p = ceil(t - 0.5);
if(p % == )
{
fenzi = p - p * (p + ) / + n;
fenmu = + p * (p + ) / - n;
}
else
{
fenmu = p - p * (p + ) / + n;
fenzi = + p * (p + ) / - n;
}
printf("%d/%d", fenzi, fenmu);
return ;
}

【题解】洛谷 P1014 【Cantor表】的更多相关文章

  1. 洛谷——P1014 Cantor表

    P1014 Cantor表 题目描述 现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的.他是用下面这一张表来证明这一命题的: 1/1 1/2 1/3 1/4 1/5 … 2/1 ...

  2. 洛谷P1014 Cantor表

    P1014 Cantor表 题目描述 现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的.他是用下面这一张表来证明这一命题的: 1/1 1/2 1/3 1/4 1/5 … 2/1 ...

  3. 洛谷 P1014 Cantor表

    P1014 Cantor表 题目描述 现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的.他是用下面这一张表来证明这一命题的: 1/1 1/2 1/3 1/4 1/5 … 2/1 ...

  4. [NOIP1999] 提高组 洛谷P1014 Cantor表

    题目描述 现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的.他是用下面这一张表来证明这一命题的: 1/1 1/2 1/3 1/4 1/5 … 2/1 2/2 2/3 2/4 … ...

  5. 洛谷 P1014 Cantor表 Label:续命模拟QAQ

    题目描述 现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的.他是用下面这一张表来证明这一命题的: 1/1 1/2 1/3 1/4 1/5 … 2/1 2/2 2/3 2/4 … ...

  6. (模拟) codeVs1083 && 洛谷P1014 Cantor表

    题目描述 Description 现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的.他是用下面这一张表来证明这一命题的: 1/1 1/2 1/3 1/4 1/5 … 2/1 2/ ...

  7. 洛谷 P1014 Cantor表【蛇皮矩阵/找规律/模拟】

    题目描述 现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的.他是用下面这一张表来证明这一命题的: 1/1 1/2 1/3 1/4 1/5 … 2/1 2/2 2/3 2/4 … ...

  8. java实现 洛谷 P1014 Cantor表

    题目描述 现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的.他是用下面这一张表来证明这一命题的: 1/1 1/2 1/3 1/4 1/5 - 2/1 2/2 2/3 2/4 - ...

  9. (水题)洛谷 - P1014 - Cantor表

    https://www.luogu.org/problemnew/show/P1014 很显然同一对角线的和是相等的.我们求出前缀和然后二分. 最后注意奇偶的顺序是相反的. #include<b ...

  10. 洛谷P1482 Cantor表(升级版) 题解

    题目传送门 此题zha一看非常简单. 再一看特别简单. 最后瞟一眼,还是很简单. 所以在此就唠一下GCD大法吧: int gcd(int x,int y){ if(x<y) return gcd ...

随机推荐

  1. How To Add Custom Build Steps and Commands To setup.py

    转自:https://jichu4n.com/posts/how-to-add-custom-build-steps-and-commands-to-setuppy/ A setup.py scrip ...

  2. maven 项目pom文件引入lib下的jar包

    <dependency> <groupId>abc</groupId> <artifactId>abc</artifactId> <v ...

  3. Ansible 批量修改密码

    客户要求每3个月修改一次主机密码.密码规则为客服提供的一串字符 xxxx + 主机后3位. 将需要登录主机添加到 Ansible. 将需要登录主机的公钥添加到 known_hosts ssh-keys ...

  4. Linux csplit命令详解

    Linux csplit命令 Linux csplit命令用于分割文件.拆解文件主要是split和csplit命令,如果说split是按大小来拆分的话,那么csplit则可按匹配来拆分: 将文件依照指 ...

  5. ELK实践-Kibana定制化扩展

    纵观任何一家大数据平台的技术架构,总少不了ElasticSearch:ES作为溶合了后端存储.快速检索.OLAP分析等功能的一套开源组件,更绝的是提供了一套集数据采集与前端展现为一体的框架(即ELK) ...

  6. 网站设置http到https

    首先ssl证书配置好,以保证可以正常访问https,若不会请看上一个文章 然后就是http模式访问怎么自动到https呢,很简单 首先在ssl网站根目录创建文件.htaccess,很多用文本文档那样创 ...

  7. Cookie 简单设置使用

    cookie的理解可以为,存放在用户浏览器上的一个文件,里面是键值对数据,用于跟服务端通讯.前端可以通过jquery cookie插件设置和读取,后端直接设置 1.获取Cookie: 1 2 3 4 ...

  8. 华为PAY公交卡建议开卡免费!

    华为PAY公交卡,大家都知道是华为与当地交通卡通公司合作的,开卡费大概15-29元,最低充值10-30元. 估计大部分开卡费是给了当地交通卡公司,华为也应该有收入分成.这个虚拟公交卡,不同于实体公交卡 ...

  9. vue插件大全汇总

    Vue是一个构建数据驱动的 web 界面的渐进式框架.Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件特别整理了常用的vue插件,来了个大汇总,方便查找使用,便于工作 ...

  10. 2018-2019-20175334实验一《Java开发环境的熟悉》实验报告

    2018-2019-20175334实验一<Java开发环境的熟悉>实验报告 一.实验内容及步骤 实验一Java开发环境的熟悉-1 建立"自己学号exp1"的目录 在& ...