【题解】洛谷 P1014 【Cantor表】
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表】的更多相关文章
- 洛谷——P1014 Cantor表
P1014 Cantor表 题目描述 现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的.他是用下面这一张表来证明这一命题的: 1/1 1/2 1/3 1/4 1/5 … 2/1 ...
- 洛谷P1014 Cantor表
P1014 Cantor表 题目描述 现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的.他是用下面这一张表来证明这一命题的: 1/1 1/2 1/3 1/4 1/5 … 2/1 ...
- 洛谷 P1014 Cantor表
P1014 Cantor表 题目描述 现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的.他是用下面这一张表来证明这一命题的: 1/1 1/2 1/3 1/4 1/5 … 2/1 ...
- [NOIP1999] 提高组 洛谷P1014 Cantor表
题目描述 现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的.他是用下面这一张表来证明这一命题的: 1/1 1/2 1/3 1/4 1/5 … 2/1 2/2 2/3 2/4 … ...
- 洛谷 P1014 Cantor表 Label:续命模拟QAQ
题目描述 现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的.他是用下面这一张表来证明这一命题的: 1/1 1/2 1/3 1/4 1/5 … 2/1 2/2 2/3 2/4 … ...
- (模拟) codeVs1083 && 洛谷P1014 Cantor表
题目描述 Description 现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的.他是用下面这一张表来证明这一命题的: 1/1 1/2 1/3 1/4 1/5 … 2/1 2/ ...
- 洛谷 P1014 Cantor表【蛇皮矩阵/找规律/模拟】
题目描述 现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的.他是用下面这一张表来证明这一命题的: 1/1 1/2 1/3 1/4 1/5 … 2/1 2/2 2/3 2/4 … ...
- java实现 洛谷 P1014 Cantor表
题目描述 现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的.他是用下面这一张表来证明这一命题的: 1/1 1/2 1/3 1/4 1/5 - 2/1 2/2 2/3 2/4 - ...
- (水题)洛谷 - P1014 - Cantor表
https://www.luogu.org/problemnew/show/P1014 很显然同一对角线的和是相等的.我们求出前缀和然后二分. 最后注意奇偶的顺序是相反的. #include<b ...
- 洛谷P1482 Cantor表(升级版) 题解
题目传送门 此题zha一看非常简单. 再一看特别简单. 最后瞟一眼,还是很简单. 所以在此就唠一下GCD大法吧: int gcd(int x,int y){ if(x<y) return gcd ...
随机推荐
- Android项目——触摸按键控制LED
一.Android Studio应用编程 1.应用程序界面layout对应的界面是activity_main.xml,后台对应的java文件是MainActivity.java,修改activity_ ...
- 关于library cache lock和row cache lock产生的常见原因
这两个等待事件其实很少出现在top5列表中,一般都没什么印象,在此整理记录以便以后查阅. 常见的library cache lock产生的原因在<高级OWI与Oracle性能调查>这本书和 ...
- Docker外包团队 2019年3月更新 企业如何使用Docker
很难将Docker所带来的影响统一的用一种特质来说.当使用Docker执行好时,它对组织,团队,开发者以及运维人员有多层次的好处.Docker使得架构设计简单化,因为所有的应用都将一致的从外部来透视主 ...
- php5.5.7添加pgsql,pdo_pgsql,swoole
一:下载php源码sudo wget cn2.php.net/distributions/php-X.X.X.tar.gz 二:解压 tar xzf /php-X.X.X.tar.gz 三:进入源码e ...
- cok-filter
小工具 # -*- coding: utf-8 -*- import pandas as pd def filterExcel(cokpath, keywords): df = pd.read_exc ...
- Android使用okhttp 响应Post请求 使用线程
1.在libs中导入okhttp-2.7.5.jar和okio-1.11.0.jar. 2.post请求 public void getData(){ new Thread(new Runnable( ...
- C# .NET 按ASCII 从小到大排序
//C#的SortedDictionary<string,string>集合对key不是按照ascii码排序的因为他没有区分大小写,这就是个差别. 如果参数名中间有大写,小写,数字,Sor ...
- C# 利用Unity 实现IOC+AOP
public interface INoticy { void Noticy(string msg); } public class SMSNoticy : INoticy { public void ...
- EMQ消息队列初体验
使用命令创建admin用户,密码123 emqx_ctl users add admin 配置规则/etc/emqx/acl.conf(除管理员,其他用户只能订阅限定的测试主题路径) %% 允许'ad ...
- [UE4]重构Grab和Drop
一.在前面的实例中是把Grab和Drop逻辑放到SimVRHand手柄对象里面,从面向对象来看,Grab和Drop逻辑应该放在被抓取的对象中,因为可能每个对象被抓取后要执行的Grab和Drop逻辑都不 ...