P1876 开灯
  ve858WFqcITf 2023年11月01日 58 0

洛谷传送门:P1876 开灯 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

难度:入门

知识点:数学(因数)

思路:

  第n个灯会被操作多少次,取决与它有多少个因数
  比如8,因数有1,2,4,8,有偶数个因数,操作完后是关灯的
  比如9,因数有1,3,9,有奇数个因数,操作完后是开着的
  因为一个知识点:1以外的自然数,都可以分解为两个自然数的乘积
  所以,如果这个数是平方数,他其中的一对因数就是重复的,导致因数的个数变成奇数个
  eg:9的因数对有(1,9)(3,3)
反思:
  虽然打表会超时或者爆内存,但是打表可以帮助我们找出规律
  这种一下子想不出需要找规律的题目,可以先打表出来看看,能不能发现规律
AC代码:
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 
 4 int main(){
 5     int n; scanf("%d", &n);
 6     for(int i = 1; i*i<=n; i++){
 7         printf("%d ",i*i);
 8     }
 9 }
10 
11 int main01(){  //打表
12     int n; scanf("%d", &n);
13     vector<int> arr(n+1,1);
14     for(int i = 2; i<=n; i++){
15         for(int j = 1; j<=n; j++){
16             if(j%i==0) arr[j] *= -1;
17         }
18     }
19     for(int i = 1; i<=n; i++){
20         if(arr[i]==1)
21             printf("%d ",i);
22     }
23     return 0;
24 }
25 
26 /*
27 知识点:数学(因数)
28 
29 心路历程:
30 直接模拟,爆内存了
31 隐隐约约觉得存在什么规律
32 
33 看题解说是平方数,这题的价值在与证明为什么是输出平方数
34 第n个灯会被操作多少次,取决与它有多少个因数
35 比如8,因数有1,2,4,8,有偶数个因数,操作完后是关灯的
36 比如9,因数有1,3,9,有奇数个因数,操作完后是开着的
37 因为一个知识点:1以外的自然数,都可以分解为两个自然数的乘积
38 所以,如果这个数是平方数,他其中的一对因数就是重复的,导致因数的个数变成奇数个
39 eg:9的因数对有(1,9)(3,3)
40 
41 反思:
42 虽然打表会超时或者爆内存,但是打表可以帮助我们找出规律
43 这种一下子想不出需要找规律的题目,可以先打表出来看看,能不能发现规律
44 
45 */

 

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  jTMfQq5cr55P   2024年05月17日   44   0   0 算法与数据结构
  jTMfQq5cr55P   2024年05月17日   40   0   0 算法与数据结构
ve858WFqcITf