自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 关于二维情况下另类切蛋糕问题的思路

参考源:3Blue1Brown:【官方中配】分圆问题,诡异的数列规律:解答篇这个情况下,我们不再考虑切几刀,而是圆周上有n个点,每一刀的刀痕都必须通过圆周上这n个点中的两个点的情况。求最大分割数。 这个问题有一个非常有趣又诡异的答案 当只有1个点的时候,最多只能有111个区域 当有2个点的时候,最多可以分成222个区域 当有3个点的时候,最多可以分成444个区域 当有4个点的时候,最...

2018-02-22 11:05:03 732

原创 关于立体图形切n刀最多切多少块的结论及推导

思路主要参照了知乎这个话题下德安城和安堇然的回答。自己再写一遍主要是为了加深理解。首先直接给出结论: 在d维空间内,对于被切中的d维立体,每一刀将造成d-1维的划痕,将该d维立体分成两部分,则切n刀后得到的块数最多为: f(d,n)=Σdk=0Cknf(d,n)=\Sigma_{k=0}^{d}C_n^k 其中,d表示维数,可以从0开始取,n表示切的刀数。为了推导过程表述方便,我们要先给出一个

2018-02-08 19:26:11 9351 1

原创 Project Euler 52题 Permuted multiples

题目来源ProjectEuler题意非常简单,找出一个数x,使得x,2x,3x,4x,5x,6x包含的数字相同但是顺序不同。其实如果想到了17=0.142857⋯" role="presentation">17=0.142857⋯17=0.142857⋯\frac 17=0.142857\cdots,就会想到142857可能是答案,但是不敢确定是最小的,还是写代码验证一下。

2018-01-29 11:42:10 430 1

原创 Project Euler 第51题 Prime digit replacements

题目来源ProjectEuler这个题先定义并解释了 x prime value family,指的是一个素数,通过将若干个数字相同的位替换为其他数字,得到的最多10个数中,仍然为素数的这些数组成的集合,比如13,将1替换成其他数字,得到23,33,43,53,63,73,83,93,加上13总共9个数,其中有13,23,43,53,73,83这六个数是素数,这就构成了一个6 prime va

2018-01-29 11:08:58 596

原创 Project Euler 46-50题

第46题 题目来源ProjectEuler这个题求满足如下条件的最小的数x: 1.是奇数 2.是合数 3.不能表示为x=p+2∗y2x=p+2*y^2,其中p为质数,y为正整数。 先筛出一个范围内的质数,比如1~100w,然后求其中的合数是否满足以上条件。 复杂度O(nn√)O(n\sqrt n)#include<bits/stdc++.h>using namespace std

2017-09-29 18:15:51 671

原创 Project Euler 41-45题

第41题 题目来源ProjectEuler 该题求由1-n的数字的全排列构成的数中,最大的素数。 显然n小于等于九。而若n=9,则∑9i=1i=45\sum_{i=1}^9i=45,是9的倍数,所以n≤8n \leq 8。 我们利用prev_permutation()函数,求一个全排列的上一个全排列,而运行len!len!次后将会回到初始排列。我们枚举全排列的长度,由长至短依次检验,一旦成功

2017-09-27 20:18:57 835

原创 Project Euler 36-40题

第36题 题目来源ProjectEuler这一题求的是小于1,000,000的所有数中,在十进制和二进制表示下都是回文数的数的和。 枚举每个数,检验即可,复杂度O(nlogn)O(n\log n) 另一种方法,可枚举前一半的位上的数字,然后将整个数加上去,由于这样产生的所有数都是结果的一部分,省去了许多冗余的运算,会更快一些。但是代码复杂度更高一些。 我使用的是第一种方法:#include<

2017-09-26 20:41:24 609

原创 Project Euler 31-35题

第31题 题目来源ProjectEuler这一题求200可以由1,2,5,10,20,50,100,200以多少种不同的方式相加而成。 将硬币分别标记为f[1]=1;f[2]=2;f[3]=5;f[4]=10;f[5]=20;f[6]=50;f[7]=100];f[8]=200; 使用dp[i][j]dp[i][j]表示利用最大面额为f[j]的纸币组成i有多少种方法。 转移就是dp[i][j

2017-09-20 13:02:36 1226

原创 Project Euler 26-30题

第26题 题目来源ProjectEuler这一题是求1i,∀i∈[2,1000)\frac1i,\forall i \in [2,1000)的所有结果的十进制小数表示下具有最长循环节的ii。 我将在我的算法中定义有限小数也是循环节为1的循环小数,例如0.25=0.25(0)0.25=0.25(0) 回忆列竖式的过程,不太会用mathtype,没对齐,不过应当容易看懂。 在竖式的最后一行,

2017-09-18 16:33:05 900

原创 Project Euler 21-25题

第21题 题目来源ProjectEuler这个题定义了一个函数d(x)=∑divisorid(x)=\sum divisor_i,其中divisoridivisor_i是xx的因子且!=x!=x 求小于10,000的所有满足d(d(a))==ad(d(a))==a的aa的和。 首先求所有数不为本身的因子的和。如果一个数一个数去分解,复杂度将会是O(nn√)O(n\sqrt n)的。但是有一个O

2017-09-14 20:23:59 812 1

原创 Project Euler 16-20题

第16题 题目来源ProjectEuler这个题是求210002^{1000}在十进制表示下各位数字的和。 我没想到很好的算法,只想到一个O(n2)O(n^2)的高精度处理,直接求出结果,再一位一位加起来。int main(){ int num[1000],len=0; num[0]=1; for (int i=1;i<=1000;i++){ int tm

2017-09-13 17:18:46 690

原创 Project Euler 11-15题

话说刚刚才注意到Project Euler的提交时间记录的是UTC 第11题 题目来源ProjectEuler这一题与第8题类似,不过这个求的是八个方向上的最值。虽然这个也可以有类似移动窗口的做法,但是考虑到长度只有四,O(n∗len∗direction)O(n*len*direction)的复杂度也不高,而移动窗口的代码复杂度会高很多。所以选择了裸暴力的做法。 (期间因为cal函数没有ret

2017-09-12 17:16:14 600

原创 Project Euler 6-10题

为什么感觉6-10题比1-5题暴力了好多,没什么好的可改进点-_-!!! 第6题 题目来源ProjectEuler这个题求(∑ni=1i)2−(∑ni=1i2)(\sum_{i=1}^ni)^2-(\sum_{i=1}^ni^2),是O(1)O(1)的。int main(){ long long ans=0,n=100; ans=n*(n+1)/2; ans*=ans;

2017-09-12 13:42:40 595 2

原创 Project Euler 1-5题

第1题 题目来源ProjectEuler这个题求的是严格小于1000的数中,是3或5的倍数的数的和。(刚开始理解错below的意思了,把1000算进去了,尴尬)int main(){ int ans=0; for (int i=1;i<1000;i++){ if (i%3==0||i%5==0){ ans+=i; }

2017-09-10 21:25:29 1439

原创 弄一个博客记录一下大学的学习生活

新手上路,多多指教不定期开坑,不一定填坑

2017-08-20 23:04:20 370

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除