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

P1014 [NOIP1999 普及组] Cantor 表

这道题需要我们按照Z形,给出第N项的值。按照Z形对表进行观察,我们可以对表中的数据进行一个分组

如图,发现第一层有一个数,第二层有两个数,第三层有三个数,第n层有n个数,且奇数层的分母是从层数p开始数到1,也就是p,p-1,p-2,p-3........,分子是1数到p,偶像层与奇数层相反。那么知道这个规律后,我们就需要根据要求的是第几项来对这一项的分子分母进行表示。

例如题目中给的N  = 7,第7项是第四层中的第一个数,偶数层分子是从1数到p,

也就是(n-(sum-p)),其中sum是上一层有几个元素,分母是p-这一项是这一层中第一个元素+1也就是p-(n-(sum-p))+1,这里可以进行化简。得到分母分子如何进行表示之后,我们只需要判断这一层是奇数层还是偶数层即可。

#include <iostream>
#include <vector>

using namespace std;
int main() {
	int n; cin >> n;
	int p = 0, sum = 0; 
	while (n>sum) {
		p++;
		sum += p;
	}
	//分母分子位置交换
	if (p % 2 == 1) {
		cout << sum - n + 1 << "/" << n - (sum - p);
	}
	else if(p%2==0) {
		cout << n - (sum - p) << "/" << sum - n + 1;
	}
	return 0;
}//p-(n-(sum-p))+1->p-n+(sum-p)+1->p-n+sum-p+1->sum-n+1

其中寻找所求项在第几层的时候,可以维护一个sum对当前有多少个元素保存,与n进行比较,如果sum>n,则所在元素在这一层


http://www.kler.cn/a/401283.html

相关文章:

  • 以Java为例,实现一个简单的命令行图书管理系统,包括添加图书、删除图书、查找图书等功能。
  • 【MySQL】系统学习数据库查询:深度学习查询操作全面详解
  • 二叉树(2)
  • Springboot项目搭建(1)-用户登录与注册
  • JavaScript 高级—求数组的最大值与最小值
  • llm模型训练导出部署一条龙
  • django——创建 Django 项目和 APP
  • STM32(hal库)中,__HAL_LINKDMA 函数使用时候,串口的handler DMA_HandleTypedef 为什么前面要加extern
  • 网络协议(4)拥塞控制
  • jvm原理介绍
  • vue-office:word(.docx)、pdf、excel(.xlsx,.xls)格式文件预览
  • 【FL0021】基于SpringBoot和微信小程序的高校就业招聘系统
  • 私域流量与视频号直播的融合创新:以 2+1 链动模式 S2B2C 商城小程序为例
  • 大型语言模型综述 A Survey of Large Language Models
  • M3-拟时序分许-3. 数据预处理、对齐和降维
  • 2024华为java面经
  • 光伏电站的方案PPT总结
  • .NET 9.0 LINQ 完全指南:从基础到高级应用场景
  • Excel表数学于三角函数、统计函数
  • 交换排序——快速排序3 针对LeetCode某OJ的优化