From Hvcime 2020-05-05
8a972074cb8fb594adf191142c932486f63d9db6a4bbbbf65eb58b44e7f3a502552fde5a754ba96ddad9cb32fc5564a79072ec1efdc47d5032fe764512d0af49ff6c4e7d7a6089c1f009b3604d4d2748c5d610f0cc2d09900e0c9978d8b1b72f27c892f9357c4054ca5826a0ce3264980c23e78b556cefc4375cbb883d2e5b29bff028ea32a63f22f78463a029b485761565c29f2409876dff6a653eef0abffb186d5179056b4383ee4aa86d2a572396553761a0366e32926bec6a9145b6c8302378a323f58e36d04dff05329ddc7dbdf735566ebbc00865be444b7d82ebb77d9bc13a26ccf9eb8f609f0ebbbd39ab24bad491354888f850d ...
欧拉筛和排序
今天学习了素数筛和排序的几种方法,emmmm因为非常容易忘掉于是就写下来总结一下!
普通筛法从2开始,把所有的数的倍数都标记为合数,剩下的就是素数,复杂度大概是O(nlogn) 似乎还行emmmmm,code:
1234567891011bool vis[200001];int Prime[2000001];int n,ans;for(int i=2;i<n;i++){ if(!vis[i]) Prime[++ans]=i; for(int j=2;j*i<=n;j++) vis[i*j]=true;}for(int i=1;i<=ans;i++)cout<<Prime[i]<<endl;
欧拉筛普通的筛法速度还不够快,嗯,难道你没有发现有很多重复的计算步骤嘛,比如24就足足被2、3、4、6、8、12一共筛了六次,那么我们怎么才能让24只被筛一次呢?
24被筛两次是因为它有多个因子,所以每个因子在筛自己的倍数的时候都会筛掉24,我们只要24的一个因子筛掉它就好了,那么谁筛掉它呢,自然是24的最大因子或 ...
笔记计划
计划内容
笔记,顾明思议,就是用来记录一些信息,方便再次查阅和复习。而这个「笔记计划」的过程是一样的,就是记录下来自己学到的东西。
原则上是记录下来一些有价值的信息,包括新学到的知识点,看到的有意思的科普视频,尝试自己独立的将这些用文章的形式写下来。这个过程既可以加深理解和记忆,也方便以后进行查阅。
计划来源这个计划最早的想法是诞生在我在 bilibili 上面看到了一期回形针的视频:「如何成为一个有身份的人?」整个过程看的非常爽,up用各种花哨的方法向我介绍了身份证里面蕴含的所有信息以及作用。但是看完之后,我再反思的时候,发现根本没有记住什么,或者说,仅仅只是让信息在自己的大脑里面走了个过场,而要让我复述一下里面的内容或者重新给别人讲一遍,根本无法做到。于是就萌发了想要记录笔记,来加深对一些快节奏知识的记忆和理解过程。
后来进入高四的学习生活过程中,逐渐明白了笔记对于高中学习的无比重要性。于是大大加深了我要完成「笔记计划」的决心。
然后在 bilibili 上看了一个名为 Computer Scinece 速成课 的系列视频,尝试了这种方法,将里面第一节内容「计算机早期历史」做 ...
【回形针】如何成为一个有身份的人?
外观
哪个男孩不想要一张可以随便去网吧的省份证呢?
上图是一个第二代身份证,我想大家应该都见过可爱的身份证。
卡片里面还有一些细节,比如「居」和「民」中间的下方有一条微缩字符,为JMSFZ(居民省份证)。在长城里面(签发机关末尾的那一段长城)有WLCC(万里长城)的微缩字符。
而在背面,有定向光变色膜的长城标识,和光变存储膜的「中国CHINA」标识。
而这个身份证,最重要的地方在于其「公民身份号码」和身份证里面埋藏的「RFID芯片」(Radio Frequency Identification 射频识别)
身份证号身份证号在你书生的那一刻,就已经定好了,它一共分为18位,四段,
其中 1-6 位是地址码,按照两个一组,分别对应出生登记地点的省级行政区,市级行政区,县级行政区。
7-14 位是出生日期码,对应着你的出生日期。
15-17 位是顺序码,用于给同年同月同日同省同市同县的人进行编号,第17位奇数表示男性,偶数表示女性。
最后一位18位是校验码,可以检验身份号码是否真实,中国使用的是 MOD 11-2 校验系统。
那么如何计算这个校验码呢?
首先对于身份证号的前十七位都有一个 ...
【CS】计算机历史
算盘等最早在于公元前2500年在Mesopotamia发明的,用于计算加减,可以保存数字的状态。发明原有是社会规模已经超过了个人的心算能力。
后来又有了星盘(用于计算纬度),计算尺(计算乘法和除法)等等。目的是让原来计算非常复杂的过程简化,降低门槛。
机械计算器计算机computer最早出现于1613年,原意指的是负责计算的人,是一种职业。
步进计算器Leibniz说过:“让优秀的人浪费时间算数简直是侮辱尊严,民用机器能算的一样准。”
于是他发明了步进计算器,是世界上第一个能够完成加减乘数的计算器。利用阶梯轴来实现进位,但算一次复杂点的就要好几天。
具体结构如下图:
内部原理:
计算表提前算好,需要的时候查阅。但是里面都是人力算出,错误百出,而且使用范围有限。
差分机Charles Babbage,计算机之父,设计出了提高乘法速度和改进对数表的差分机,但是太过于复杂,Babbage花光了预算只造出来了1/7,没人投资,因此放弃。后来1991年伦敦科学博物馆在Babbage诞生200周年的时候,历时十七年造出了这台差分机,发现可以完成其设计指标的性能。
七分之一的差分机:
...
写给十年后自己的一封信
8a972074cb8fb594adf191142c932486f63d9db6a4bbbbf65eb58b44e7f3a5022384fee32809fad300fb3658ea3d699e17e0aba0a435aa5887c798ec04eb07c0c2c8c3690338f3bfad91fbc08b530ea44c52f0ffb76d45a43bf2cb153cd9791487ff03d62af9c5e51bbd8702d7dbb0b4822c473a626bb2862951ac98bdaf81ac41d41baa0fca57f51cfca2d7baa16bd1d8c6ee90372a48a025786cad180133d2f9b105ad5f1c51a7798658c907124647d9f36ba3f28a0619965f97dd134a03baafaeddc7a5807f264048a6ba166bffd77de588060096b005a8cfec66617361d1576c7d3ba0cea5ad49dc2f86f44b09b955be1fac1d56dbbbb ...
From Xorex 2019-11-01
8a972074cb8fb594adf191142c9324866304b74e161455f435036adf83d1e4f6506ab1293a3a1128c4c39a6609161d45d152f6ba5952889500f334f591faede1922c3b407601913f713e3390fac5b00ee24abb6383fee013d63b730c2c239fa4992f3d4bb012c18653e5dd3bd253564f2bf77805f29454e2766dbefec3a60142af2d5b7a4a427cd30b100cdea1be70998fafc1c6e11494dd6893f6fc6560a0b381ff6733aba78cfac31939d0e00667eb7c3f89eaec3163e86f7b2f580c31c03ceb8ffb2014b5fba0948d4c87154ab92b4a706a1f2fe66bcce1cc4716421281937b28f38a22c212da5a1bb686bbff84a268c95dfe9f256f501 ...
From Xorex 2019-08-01
8a972074cb8fb594adf191142c932486f63d9db6a4bbbbf65eb58b44e7f3a5028cc86a34e150c89c598a8a1751a57ece93ef35f78a509e8a998b6fc4a7557e668d89c0154da48434da52aa3240b539713bb5290d361a01e53dcb613f70ead5132bab0cf00d53632666563d07c1e84a343f8c13e3d79213633c6fe47252d77312b2a5754c338fa0a00dca76d4ad93fa7b71a372944c8de92566288769561a1745b8e863cd70def85208d1c549bf6181fdb3f394e8378315e3458b6e5a7787a82fc2385e122181e1dbd0958a262f2f72a62c637a3f3271531fef39c2bcabdfe485f8132a0d2f8fe6725212f8a3f7ae8da91fd65f9b05c74fa05 ...
引用 reference
求地址运算符 &在C++里面,如果想要得到找到一个变量的地址,就可以使用&variable来实现,比如:
123456int main(){ int a=123123; cout<<&a<<endl; return false;}
运行结果就是:0x61fe9c,返回的这个地址类型是int*,也就是指针类型,可以被指针变量保存。
引用 reference基本用法
C++里面有引用功能,说白了就是别名,其本质上就是给一个变量再起一个名字,使用方法就是&new_variable=declared_variable。这样new_variable和declared_variable就是同一个变量,占用一个内存空间,使用任意一个名字更改值,另一个调用值也会变。
123int a=10,&b=a,&c=b;b=20; c=30;cout<<a<<' '<<b<<' '<<c<&l ...
Python 赋值逻辑
写在前面
在进行Python的代码训练计划之中,自己出现了一些莫名其妙的bug,经过上网一番查询发现,是因为Python的赋值逻辑不同于C++,而我并没有意识到这些不同,所以特意总结下来,接下来的blog为搬运,原文链接在文章最后。
引例:先来看一组似乎矛盾的代码:
12345>>> a = 3>>> b = a>>> b = 5>>> a3
这看上去似乎很好理解。第二步中, a 只是把值复制给 b,然后 b 又被更新为 5,a 和 b 是两个独立的变量,那么 a 的值当然不会受到影响。
真的是这样吗?
再来看一段代码:
12345>>> a = [1, 2, 3]>>> b = a>>> b[0] = 1024>>> a[1024, 2, 3]
第二步中,a 只是复制把列表复制给 b,然后更新 b[0] 的值,最后输出 a,可是 a 竟然也被改变了。
按照代码 1 的逻辑(即变量之间独立),代码 2 的中的 a 不应该受到影响。
为什么 ...