翻牌的数论推倒题——319. 灯泡开关
Posted C_YCBX Py_YYDS
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了翻牌的数论推倒题——319. 灯泡开关相关的知识,希望对你有一定的参考价值。
题目
题目解析
曾经做过一道一模一样的题目:翻扑克牌的题目
题目描述如下:
首先我们应该很快清楚:
- 被翻牌奇数次的牌肯定是正面朝上。
- 被翻牌偶数次的牌肯定是背面朝上。
继续观察:
第一次—— 1*2、2*2、2*3…
第二次—— 1*3、2*3、3*3…
我们发现:
某个数的翻牌次数,就是他的因数个数(除去1),比如4的因数有1、2、4,所以除去1有两个,所以翻两次牌。
最后给出结论:由于有这个规律,所以只要因数有奇数个则对应翻牌偶数次——所以只有完全平方数满足!
解题代码
简单计数
class Solution {
public:
int bulbSwitch(int n) {
int i;
int res = 0;
for(int i = 1;i*i<=n;i++){
res++;
}
return res;
}
};
一次到位计数
class Solution {
public:
int bulbSwitch(int n) {
return sqrt(n);
}
};
以上是关于翻牌的数论推倒题——319. 灯泡开关的主要内容,如果未能解决你的问题,请参考以下文章
题意解读+详细题解-Leecode 319. 灯泡开关——Leecode每日一题系列
LeetCode 319 灯泡开关[数学] HERODING的LeetCode之路