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

开灯问题(数学思路)

是的,你没有看错,就是简单的开灯问题,难度仅为入门,但是这题在做的时候我也仅是找到了规律,并没有证明出来时为什么,直到看大犇的证明,我才发现,我在数学上真的还是太拉了,话不多说还请看题

题目传送门——开灯问题

题意:就是说给你n个灯,n轮游戏,到了第 i 轮 ,所有因数有 i 的都要进行一次操作(换言之,i 的倍数都要进行一次操作),然后问你哪些灯是开的,哪些灯是关的

思路:刚读题的时候,我认为这不模拟一下就过了,直到我看到了数据为2^40,我才认为这题是有规律的,一开始我是自己在纸上画到了9,然后发现了完全平方数的规律,然后才做出来的

But,我们可以写出一种数学的证明

(1)首先来分析什么情况下灯是开的:一开始灯的状态是关的,但是最后要是开的,说明对灯进行了奇数次操作 

(2)再来分析什么时候才会对灯进行操作: 只有轮次 i 为灯 k 的因数的时候,即 k%i==0,才能对灯进行操作

(3)哪些数才会有奇数个因子:首先我们设 p 为质数, a 为指数。

分解质因数可知:对于任意任意的合数,都可以分解成若干个质数相乘的形式

可以记为 n^2=p1^a1+p2^a2+……+pk^ak;

然后对于任意的正整数,计算因数个数的公式为:(a1+1)*(a2+1)*……*(ak+1)    (这里的a指的是质数的指数) 

计算因数个数的公式的推导: 

我们知道1为所有数的因数,而我们的每一项质数都有a的指数,那么我们可以说我们对1乘以每个质数的范围内的指数(0~a)都是这个数的因数,所以对于第一项质数,我们可以乘的次数就是a1+1,然后一次类推,最后因数个数的公式为(a1+1)*(a2+1)*……*(ak+1

那么也就是说只有上面每一项都为奇数,最终的因子才能为奇数,也就是说每一个指数a都是偶数

结合分解质因数公式,假设n能拆分成若干个质数,那么n^2得到的质数的指数一定为偶数,所以只有完全平方数才能够,满足条件,因数的个数为奇数

然后就是朴实无华的小代码:

#include<bits/stdc++.h>
using namespace std;
#define int long longint n;
signed main()
{cin>>n;for(int i=1;i*i<=n;i++){cout<<i*i<<" ";}return 0;
}

相关文章:

  • 第二十条:与抽象类相比,优先选择接口
  • 程序员需要具备的核心竞争力
  • 【等保2.0是什么意思?等保2.0的基本要求有哪些? 】
  • 游戏中的坐标转换函数*2(laya2D)
  • JVM的五大内存区域
  • AGI 之 【Hugging Face】 的【Transformer】的 [ Transformer 架构 ] / [ 编码器 ]的简单整理
  • 【python】OpenCV—Nighttime Low Illumination Image Enhancement
  • 1.1.2数据结构的三要素
  • 将带有 商店idr 商品信息的json导入到mongodb后,能不能根据商店id把所有商品全部提取并转为电子表格
  • 基于Echarts进行图表组件的封装
  • 在Linux/Debian/Ubuntu中出现“Could not get lock /var/lib/dpkg/lock-frontend”问题的解决办法
  • maven项目、idea抽风问题解决
  • 【React性能优化】父组件渲染如何避免子组件不必要的渲染
  • xcrun: error: unable to find utility “simctl“, not a developer tool or in PATH
  • 从硬件角度看Linux的内存管理
  • @jsonView过滤属性
  • AWS实战 - 利用IAM对S3做访问控制
  • co.js - 让异步代码同步化
  • Java 内存分配及垃圾回收机制初探
  • Javascript Math对象和Date对象常用方法详解
  • JWT究竟是什么呢?
  • mysql中InnoDB引擎中页的概念
  • oldjun 检测网站的经验
  • Vue2 SSR 的优化之旅
  • vue学习系列(二)vue-cli
  • 基于遗传算法的优化问题求解
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 事件委托的小应用
  • 算法-插入排序
  • #1015 : KMP算法
  • #图像处理
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • $refs 、$nextTic、动态组件、name的使用
  • (2)STL算法之元素计数
  • (2)空速传感器
  • (6)STL算法之转换
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (十一)图像的罗伯特梯度锐化
  • (实战篇)如何缓存数据
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (状压dp)uva 10817 Headmaster's Headache
  • ***原理与防范
  • 、写入Shellcode到注册表上线
  • .NET Framework 服务实现监控可观测性最佳实践
  • .NET Standard 的管理策略
  • .NET 读取 JSON格式的数据
  • .Net程序帮助文档制作
  • .NET设计模式(7):创建型模式专题总结(Creational Pattern)
  • @EnableConfigurationProperties注解使用
  • @param注解什么意思_9000字,通俗易懂的讲解下Java注解
  • [ 网络通信基础 ]——网络的传输介质(双绞线,光纤,标准,线序)
  • [2008][note]腔内级联拉曼发射的,二极管泵浦多频调Q laser——
  • [AMQP Connection 127.0.0.1:5672] An unexpected connection driver error occured