随笔分类 - 数论
摘要:double sqrt_newton(double n) { const double eps = 1E-15; double x = 1; while (true) { double nx = (x + n / x) / 2; if (abs(x - nx) < eps) break; x = n
阅读全文
摘要:概念: int ex_gcd(int a, int b, int& x, int& y) { if (b == 0) { x = 1; y = 0; return a; } int d = ex_gcd(b, a % b, x, y); int temp = x; x = y; y = temp -
阅读全文
摘要:传送门:https://vjudge.net/problem/HDU-6822 题意:给你一张无限的纸有四种折叠方式,并且在n次折叠后减两刀问最后纸张数量的数学期望。 思路:我们要得到一个通项公式对于不同折叠情况下的最后所得纸张数量,因为从上往下对折和从下往上对折是一样的,同理从左忘右对折和从右往左
阅读全文
摘要:题目链接:https://vjudge.net/problem/HDU-6814 题意:在[1,n]中随机取三个数a,b,c作为直角四面体的三条直角棱,求顶点d到ABC面的高的倒数平方的数学期望。 思路: 1 //#include<bits/stdc++.h> 2 #include<time.h>
阅读全文
摘要:题意: 询问类似于这样的三角形中:里面正三角形的个数是多少。 思路:打表找了个规律发现就是C4n+3 1 //#include<bits/stdc++.h> 2 #include<time.h> 3 #include <set> 4 #include <map> 5 #include <stack>
阅读全文
摘要:题目: 题意:给出一个序列a1,⋯,ana1,⋯,an。fac(l,r)fac(l,r)为mul(l,r)mul(l,r)中不同质因数的个数。 请计算: ∑i=1n∑j=infac(l,r) 思路:求质因数的贡献度,我们可以定义一个二维vector pos[i][k]=p表示当前质因数i在p位置出现
阅读全文
摘要:1 #include<iostream> 2 #include<algorithm> 3 #include<vector> 4 #include<cstring> 5 #include<cstdio> 6 using namespace std; 7 #define mem(s,n) memset(
阅读全文
摘要:题目链接:https://vjudge.net/problem/LightOJ-1370 题意:给你N个欧拉函数值,找出每一个大于等于该欧拉函数值的数,并且要求相加和最小。 题解:因为素数i的欧拉函数值等于i-1,所以我们只要找出大于等于i+1的素数即可。 1 #include<iostream>
阅读全文
摘要:题目链接:https://vjudge.net/problem/POJ-2635 题意:给定一个由两个质数积的大数M和一个数L,问大数M的其中较小的质数是否小于L。 题解:因为大数M已经超过long long 范围,那么我们就需要进行大数分解由十进制转换为1000进制,然后只要从2-L遍历一遍。 代
阅读全文
摘要:概念:欧拉函数用于解决1-n之间有多少数与n构成互质关系。 公式: 注解:pi为x的所有质因子,特别的要注意当x=1时,函数值为1。 证明:https://blog.csdn.net/wrwhahah/article/details/82704053 性质: 具体实现: 欧拉筛法: 1 #inclu
阅读全文
摘要:1.埃氏筛法:时间复杂度是O(nlognlogn),打表把一定范围内的质数都记录在数组里所以空间复杂度较高。具体的实现是通过两个数组一个prime记录当前范围的质数序号,另一个isprime判断是否是素数,将isprime初始化为1,从i=2开始遍历标记所有i的倍数的数的isprime为零。 代码:
阅读全文
摘要:题目链接 https://pintia.cn/problem-sets/994805046380707840/problems/994805046577840128 题意:给定n个点求三角形最小面积; 题解:该题两个难点: 1.该怎么遍历(正常枚举会超时)。 2.用什么方法计算三角形面积。 解决方案
阅读全文