自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Project Euler 014 Longest Collatz sequence

题意:定义一种变换,当nn是奇数的时候变成3n+13n+1,当nn是偶数的时候变成n/2n/2,有个猜想是所有数都会变回00,问1∼1061\sim10^6中变回11步数最长的那个数。 分析:目前只想到记忆化搜索,顺便加点小优化。#include <bits/stdc++.h>#define ll long long#define pii std::pair<int,int>#define mp

2017-02-23 23:09:56 312

原创 Project Euler 013 Large sum

题意:求1010个5050位数的和的前1010位。 分析:裸的高精度,或者double啊啥的应该也是能过的吧。#include <bits/stdc++.h>#define ll long long#define pii std::pair<int,int>#define mp std::make_pair#define fi first#define se second#define SZ

2017-02-23 22:52:23 265

原创 Project Euler 012 Highly divisible triangular number

题意:求第一个满足约数个数>500>500个的三角形数。 分析:考虑第nn个三角形数是n(n+1)2\frac{n(n+1)}{2},而nn和n+1n+1互质,因此有 d(n(n+1)2)=⎧⎩⎨⎪⎪⎪⎪d(n2)⋅d(n+1),n为偶数d(n)⋅d(n+12),n为偶数d\left(\frac{n(n+1)}{2}\right)=\left\{\begin{matrix}d(\frac{n

2017-02-15 22:06:43 293

原创 Project Euler 011 Largest product in a grid

题意:给定一个20×2020\times 20的矩阵,求最大的四个连续的数的乘积,连续意思是同一行连续或同一列连续或者斜线连续。 分析:暴力枚举四个数的起点,暴力枚举方向,O(202⋅4⋅4)O(20^2 \cdot 4\cdot 4),可以用之前008008的方法做到O(202⋅4)O(20^2\cdot 4)。#include <bits/stdc++.h>#define ll long lo

2017-02-15 21:52:44 212

原创 Project Euler 010 Summation of primes

题意:求2×1062\times 10^6以内的质数的和。 分析:欧拉筛法即可。#include <bits/stdc++.h>#define ll long long#define pii std::pair<int,int>#define mp std::make_pair#define fi first#define se second#define SZ(x) (int)(x).si

2017-02-15 21:40:49 175

原创 Project Euler 009 Special Pythagorean triplet

题意:求一组勾股数(a,b,c)(a, b, c),满足a+b+c=1000a + b + c = 1000。 分析:暴力枚举a,ba, b是O(10002)O(1000^2)的。 考虑公式a=m2−n2,b=2mn,c=m2+n2(m>n)a = m^2-n^2, b = 2mn, c = m^2+n^2(m >n)已经可以生成所有的基本勾股数了,我们只需要在所有基本勾股数中找一组周长是100

2017-02-15 21:25:04 214

原创 Project Euler 008 Largest product in a series

题意:求一个10001000位数中,最大的连续1313个数字的乘积。 分析:考虑暴力枚举起始位置就是O(13n)O(13n)的,考虑将串按00分成若干段,就可以O(n)O(n)了。#include <bits/stdc++.h>#define ll long long#define pii std::pair<int,int>#define mp std::make_pair#define f

2017-02-14 21:42:32 318

原创 Project Euler 007 10001st prime

题意: 求第1000110001个质数 分析: 考虑[1,n][1, n]内质数出现个数约为nlnn\frac{n}{\ln n},n=120000n=120000时就满足条件了,直接在这个范围内做筛法筛出质数即可。#include <bits/stdc++.h>#define ll long long#define pii std::pair<int,int>#define mp std::m

2017-02-14 21:27:03 196

原创 Project Euler 006 Sum square difference

题意:∑100i=1i2−(∑100i=1i)2\sum_{i = 1} ^ {100}i^2 - (\sum _ {i = 1} ^ {100}i)^2 分析:依旧考虑两种做法。 1. 暴力求出两个值。 2. 前一个等于n(n+1)(2n+1)6\frac{n(n + 1)(2n + 1)}{6},后一个等于(n(n+1)2)2\left(\frac{n(n + 1)}{2}\right)

2017-02-14 21:20:05 204

原创 Project Euler 005 Smallest multiple

题意:lcm(1,2,3,...,20)lcm(1,2,3,...,20) 分析:依旧考虑两种做法。 1. 直接lcm(1,lcm(2,lcm(3,...)))lcm(1, lcm(2, lcm(3, ...)))。 2. 求出每个数的质因数分解,每个质数取个最高次幂即可。#include <bits/stdc++.h>#define ll long long#define pii std:

2017-02-14 21:11:21 201

原创 Project Euler 004 Largest palindrome product

题意:求由两个三位数乘起来构成的数中的最大的回文数。 分析:依旧考虑两种做法。 1. 直接暴力枚举两个数在判断,O(n2logn)O(n^2\log n)。 2. 枚举回文串的前一半,再判断是否能由两个三位数乘起来,O(Σd)O(\Sigma d),dd表示枚举出来的回文串的约数个数,可以先pollard-rho把所有质因子搞出来,再dfs出所有的约数。#include <bits/stdc

2017-02-14 21:01:10 219

原创 Project Euler 003 Largest prime factor

题意:求600851475143600851475143的最大质因子。 分析:依旧考虑两种做法。 1. 直接暴力枚举质因子,O(n0.5)O(n^{0.5})。 2. pollard-rho,O(n0.25logn)。O(n^{0.25}\log n)。#include <bits/stdc++.h>#define ll long long#define pii std::pair<int,

2017-02-13 12:32:46 268

原创 Project Euler 002 Even Fibonacci numbers

题意:求≤4000000\leq 4000000的所有偶fibonaccifibonacci数的和 分析:依旧考虑两种做法。 1. 我们直接枚举每个斐波那契数,O(log4000000)O(\log 4000000)的复杂度。 2. 考虑fibfib数列的奇偶性,每三个一个循环节,那我们可以设计一个矩阵乘法或者直接拿通项求一个等比数列。#include <bits/stdc++.h>#defi

2017-02-12 19:53:11 236

原创 Project Euler 001 Multiples of 3 and 5

题意:求<1000<1000的所有3 or 53~or~5的倍数的数的和 分析:考虑两种做法,第一种我们直接枚举每个数,O(1000)O(1000)的复杂度,第二种考虑容斥,33的倍数+55的倍数-1515的倍数

2017-02-12 19:33:28 221

空空如也

空空如也

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

TA关注的人

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