数学题
yangdelu855
算法工程师
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
铁废物补题
每次参加公司组织的类似icpc的个人赛都心态炸裂有意思的一道题 A,B 有两幅扑克牌标了1-n,随机打乱分堆,最少两堆,A先手,每次只能拿牌堆顶的数字相同的两张牌,使对方没有牌拿的那方获胜,AB已知每堆的排列,都采取最优的策略直接拓扑排序就行了emmm...原创 2021-07-27 21:20:42 · 138 阅读 · 0 评论 -
截取数组逆序插入到数组前,原数组开始位置
昨天看到道题有一个严格递增或递减数组截取后半段逆序加到前面比如100 90 80 5 6 7 8结果5以为二分可做 然而感觉不好做三分太好理解了 求凹凸函数最值# -*- coding: utf-8 -*-def tri_search(nums_list,is_max): #求凹凸函数最值 l,r,mid,mmid = 0,len(nums_list)-1,0,0 while(l<r-2): #剩三个点 mid = (l+r)/.原创 2021-03-05 19:37:30 · 210 阅读 · 0 评论 -
小Q的歌单 | 卢卡斯定理
好久不见数论的题,碰到组合数+取模 马上想到卢卡斯定理 (其实组合数的递推式也可以做Ac代码#include <iostream>#include<algorithm>using namespace std;typedef long long ll;ll f[101];ll mod = 1000000007;void init() { f[0] = 1; for (ll i = 1; i <= 100; i++) f[i原创 2020-05-28 15:50:13 · 224 阅读 · 0 评论 -
假的数学游戏
题目如图 看到阶乘马上想到斯大林公式 防止溢出对两遍取对数代码如下import mathdef solve(x): l, r = 1, int(1e12) aim = x * math.log(x) mid = 0 while (l < r): mid = (l + r) // 2 value = const_ + mid * (math.log(mid) - 1) + 0.5 * math.log(m...原创 2020-05-21 15:37:54 · 276 阅读 · 0 评论 -
51nod 1242 斐波那契数列第N项
传送门--斐波那契数列第N项矩阵连乘快速幂取模#include#includeusing namespace std;const int maxn=2;struct Matrix{ long long int m[maxn][maxn];};long long int n;Matrix P={1,1, 1,0};Matrix I={1,0,原创 2017-07-27 20:41:06 · 289 阅读 · 0 评论 -
hdu 3944 DP?
点这里TLE到WA。。改了无数次的代码。。最后差在取模少了一次看了题解就一直被题解牵着走。。。。。解释有大佬的博客写的很清楚。。记个教训#include #include #include using namespace std;typedef long long ll;int f[10005][10005],mf[10005][10005];int pri原创 2017-08-04 17:00:42 · 263 阅读 · 0 评论 -
51nod 1004 n^n的末位数字
点这里越来越懒了难过刷水题规律题#include #include #include using namespace std;typedef long long ll;int ans[10][5]{ {0},{1},{2,4,8,6},{3,9,7,1},{4,6},{5},{6},{7,9,3,1},{8,4,2,6},{9,1} };int main(){原创 2017-08-20 14:22:36 · 249 阅读 · 0 评论 -
51nod 1179 最大的公约数
点这里一道暴力水题一开始总RE没考虑因子的大小。。。#include #include #include #include using namespace std;int tt[50010];int tt1[1000005];int max(int a, int b){ if (a > b) return a; else return b;}int ma原创 2017-08-14 12:15:57 · 230 阅读 · 0 评论 -
uva 10325 The Lottery 枚举子集+容斥原理
点这里容斥原理可以看看这篇http://blog.youkuaiyun.com/yangdelu855/article/details/76832254突然发现了个好玩的东西枚举子集找出0-9的所有子集#includeint main(){ int n=10; for(int i=0; i<(1<<n); i++) { for(int j原创 2017-08-07 14:45:27 · 342 阅读 · 0 评论 -
拖拖拖了好久的校赛补题nefu1259&nefu1260&nefu1261&nefu1262&nefu1263&nefu1264
NEFU1259题目:还记得矩阵快速幂吗?给出如下递推方程:f(n)=f(n-1)+2^(n-1) 其中 f(1)=1,求 f(n)快速幂模板题(一开始居然想用递归真是脑子烧坏了)#include using namespace std;typedef long long ll;const int mod=1e9+7;ll quickmod原创 2017-12-15 21:42:18 · 490 阅读 · 0 评论 -
hdu 5973 Game of Taking Stones java大数+根号5的精度
威佐夫博弈的模板题但是数据太大 用到java大数 还需要注意精度问题 没具体数就复制了下面的几行根号5的10000位因为package wa了好几发import java.math.*;import java.text.*;import java.util.*;public class Main { public static void main(String原创 2018-01-12 18:51:45 · 321 阅读 · 0 评论 -
hdu 5976 Detachment 逆元+打表
一开始以为是规律题 找了好久没找到规律题意很明确最后发现它的积和阶乘有关系 两个数越接近和越大#include #include #include#include#include using namespace std;const int mod=1e9+7;const int maxn=50000;typedef long long ll;ll f[maxn];l原创 2018-01-12 18:56:32 · 226 阅读 · 0 评论 -
hdu 5979 Convex
给角的个数和度数和边的长度求多边形面积 水题。。。#include#include#includeusing namespace std;#define pi 3.1415926int main() { int m,n,a[15]; float ans; while(cin>>m>>n) { for(int i=0;i<m;i++)原创 2018-01-12 19:06:06 · 209 阅读 · 0 评论 -
hdu 5978 To begin or not to begin 博弈水题
很简单的博弈代码也很简单#include #include #include#include#include #define pi 3.1415926using namespace std;int main(){ int m,n; while(cin>>m) { if(m%2==1) puts("0");原创 2018-01-12 19:10:41 · 285 阅读 · 0 评论 -
hdu 5974 A Simple Math Problem 一元二次方程
已经是第三遍做这个题了 (两个数的和)和(这两个数的最小公倍数)的最大公约数等于这两个数的最大公约数 gcd(x,y)=gcd(x+y,lcm(x,y))设x是其中一个数 另一个数为a-x x*(a-x)/gcd(a,b)=lcm(a,b)#include #include #include#include#include #define pi 3.1415926u原创 2018-01-12 19:17:56 · 265 阅读 · 0 评论 -
poj 1113 Wall凸包
凸包入门。点这里画图就能看出来周长就是一个圆+凸包周长大佬的模板一次循环求上部一次循环求下部#include<iostream>#include<stdio.h>#include<math.h>#include<stdlib.h>#include<string.h>#include<algori...原创 2017-07-29 10:35:06 · 269 阅读 · 0 评论 -
hdu 5514 Frogs 容斥或欧拉函数
题目链接题意 输入n,m,n代表青蛙个数 m代表石头个数 石头围成一圈 由0编号到m-1 第二行输入n只青蛙的步长,一块石头不能被两只青蛙同时占领,求石头编号的和,以第一组样例2 129 10 为例2 即两只青蛙 12是石头个数 两只青蛙最开始都在编号为0的石头上 第一只青蛙 可以跳到 编号9 (9+9)%12 编号6 (18+9)%12 编号3 (27+9)原创 2018-01-15 15:01:08 · 293 阅读 · 0 评论 -
hdu 5512 Pagodas找规律
题目链接给定n,m,k 可以建的塔的标号可以是m+k或m-k或k-m,两个人互相建塔,问在[1,n]中谁先没有塔可以建,写几组数据找找规律就会发现,建塔的数都是gcd(m,k)的倍数,判断n中gcd(m,k)的倍数的个数就行了#include #include #include using namespace std;int gcd(int n,int m){原创 2018-01-15 15:09:48 · 302 阅读 · 0 评论 -
hdu 5114 Collision 扩展欧几里得
题目链接题意 先给出一个矩形的范围a,b,然后给出两个点的坐标,这两个点都以速度(1,1)移动碰到矩形边时 以(-1,-1)移动再循环往复,两个点相碰撞时的坐标。可以将速度分解,直接求时间,可以分为四种情况第一种x1==x2&&y1==y2这时两个点已经碰撞 所以tc=0第二种x1==x2&&y1!=y2只需判断什么时候y相等 推出公式tc=ty=b-(y1+y2)/2;第三种x1!=x2&&y1原创 2018-01-17 19:40:04 · 271 阅读 · 0 评论 -
nefu 1315 BD的难题2
题目链接哇 这个标题我以为是前一道题的加强版 结果没想到比第一题简单多了。慢慢推出规律来设输入的数为m那么注意这个和会爆int 因为long long wa了好几发。。。。#include #include using namespace std;typedef long long ll;ll tt[1000005];const int maxn=1原创 2018-01-26 19:51:45 · 340 阅读 · 0 评论 -
nefu 1314 BD的难题
题目链接这道题标号是1314耶比赛的时候推了好久的式子还是没做出来看到大佬博客 直接套上模板就过了#include #include using namespace std;const int maxn=1e6;typedef long long ll;ll solve(ll n){ ll ans=0; ll i,t=(ll)sqrt(1.0*n);原创 2018-01-27 20:56:18 · 353 阅读 · 0 评论 -
51nod 1100 斜率最大
点这里题不难 两次遍历会TLE#include #include #include using namespace std;struct node{ double x,y; int num;} t[10005];bool cmp(node a,node b){ return a.x<b.x;}double xl(node a,node b)原创 2017-07-29 09:17:36 · 372 阅读 · 0 评论 -
light oj 1072 Calm Down
题目链接一道简单的计算几何给你一个大圆 然后向大圆里放小圆 给定小圆个数问 小圆半径(R-r)*sin(a)=r#include #include #include using namespace std;#define pi acos(-1)int main(){ int a,b; int t; cin>>t; int d=1;原创 2018-01-29 15:53:21 · 414 阅读 · 0 评论 -
第十届蓝桥杯 A组 RSA解密
这次蓝桥杯对于acm学数学的太友好了emmm 然而还是菜啊我和填空最后一题死磕了一个小时 (太蠢了)没有Python写Java大数写到自闭题目大意:n=p*qp,q为素数d与(p-1)*(q-1)互素(d*e)%((p-1)*(q-1))=1c=x^d%nx=c^e%n给定d,c,n求x素数筛可以求出p,q 用欧几里得验证是否满足互素条件,快速幂直接乘会...原创 2019-03-24 17:58:55 · 3716 阅读 · 4 评论 -
nefu 1426 素数筛
Description阿华和阿璐是很好的朋友,他们时时刻刻都不舍得分离。但有一天,巨龙突然出现,带走了阿璐又消失不见,阿华带上最好的剑,翻过最高的山,闯进最深的森林,骑上最快的马,终于找到了巨龙和阿璐。巨龙给阿华出了一个难题,并表示如果阿华解决了这个问题,阿华就可以带走阿璐。巨龙给阿华了n块宝石,宝石上写着1-n,巨龙让阿华找到写的是素数的宝石,阿华用了一点时间找到了,但巨龙还不满意,他把阿华找...原创 2019-04-24 20:01:38 · 273 阅读 · 0 评论 -
hdu 3037 Saving beans 卢卡斯定理
点这里卢卡斯定理的模板题利用隔板法易知组合数C(n+m,m)ans=C(n+m,m)%p快速幂求逆元#include #include #include #include using namespace std;typedef long long ll;const int maxn= 100000;ll mod;//=1e4+7;ll f[maxn];voi原创 2017-07-31 21:03:09 · 272 阅读 · 0 评论 -
51nod 1256 乘法逆元
传送门--乘法逆元模板题#include #include #include #include using namespace std;int exgcd(int a, int b, int &x, int &y) { if (!b) { x = 1, y = 0; return a; } int t, ret;原创 2017-07-27 20:35:30 · 200 阅读 · 0 评论 -
51nod 1264 线段相交
传送门--线段相交快速排斥&&跨立实验#include #include #include #include using namespace std;struct point{ double x; double y;};struct v{ point start; point end;};double fun(point p1,poin原创 2017-07-27 20:37:31 · 330 阅读 · 0 评论 -
51nod 1298 圆与三角形
点这里计算几何题不难。。好想长一个脑子啊感谢大佬相助#include #include #include #include using namespace std;double x[4],y[4];double a,b,r,A,B,C;double dis(double x1,double y1,double x2,double y2){ return原创 2017-07-28 16:34:50 · 212 阅读 · 0 评论 -
51nod 1265 四点共面
= =套公式#include #include using namespace std;typedef struct node{ int x,y,z;}xv;int main(){ int n; xv t[5]; while(cin>>n) { while(n--) { for(int i=0原创 2017-07-28 16:41:30 · 246 阅读 · 0 评论 -
51nod 1046 A^BMod C
点这里模板题。。。#include #include #include #include using namespace std;const int maxn=1e5+5;static long long mod=1e9+7;long long a=0,b;long long quick_mod(long long aa,long long b){ long l原创 2017-07-29 10:12:50 · 236 阅读 · 0 评论 -
51nod 1014 X^2ModP=A
点这里暴力啊暴力#include #include #include #include using namespace std;typedef long long ll;int main(){ int P,A; while(cin>>P>>A) { int t=0; for(ll i=0;i<=P;i++) {原创 2017-07-29 11:20:02 · 244 阅读 · 0 评论 -
51nod 1116 K进制下的大数
点这里一开始一直WA。。因为进制从2开始无论是多少结果都是二要从最大数加一的进制开始遍历后来TLE 结果 改掉了模拟进制转换结果就A了。。数学题。。运气。。#include #include #include #include using namespace std;char x[100005];int t[100005];long long mc(int x,i原创 2017-07-30 23:18:20 · 218 阅读 · 0 评论 -
51nod 1381 硬币游戏
点这里画下图可以知道只有两种情况 2R和2R+1因为相切的可能性几乎可以看做为0所以期望为2R#include using namespace std;int main(){ int n,m; while(cin>>n) { while(n--) { cin>>m; cout<<m原创 2017-07-29 19:44:23 · 219 阅读 · 0 评论 -
51nod 1189 阶乘分数
素数打表求素因子个数套公式求因子个数快速幂求逆元#include #include #include #include #define mod 1000000007using namespace std;typedef long long ll;int prime[1000005];int vis[1000005],cnt;ll quick_mod(ll a,ll原创 2017-07-27 20:30:02 · 345 阅读 · 0 评论 -
= =回归。。【UVAlive】6859凸包
= =这道题看了题面画了画图就没想用凸包做试了试暴力。。。然而失败了。。。凸包。。。用了别人的模板。。。侵删解题思路:输入数据的时候把一个点变为上下左右的四个点,然后用凸包筛一遍点,需要注意边长只能是1和根号2,因为所有点都在网格上。。最后直接输出就行大佬的公式: double x=fabs(a.x-b.x); double y=fabs(原创 2017-07-27 14:31:41 · 304 阅读 · 0 评论 -
UVA 10870 Recurrences 矩阵连乘 快速幂取模
点这里= =套个模板#include#include#includeusing namespace std;const int maxn=16;struct Matrix{ long long m[maxn][maxn];};long long x[16];long long d,n,m;Matrix P;Matrix I={ 1,0,0,0,0,0原创 2017-07-30 23:22:28 · 321 阅读 · 0 评论 -
51nod 1120 机器人走方格V3 卡特兰数+卢卡斯定理
点这里忘了好久的公式。。。终于想起来查卡特兰数卡特兰数计算公式C(2n-2,n-1)/n或C(2n,n)-C(2n,n-1)卢卡斯定理 用于大组合数取模运算ans=(C(2n-2,n-1)/n)*mod#include #include #include #include using namespa原创 2017-07-31 12:51:46 · 389 阅读 · 0 评论 -
51nod 1256 乘法逆元
点这里模板题。。。。#include #include #include #include using namespace std;int exgcd(int a, int b, int &x, int &y) { if (!b) { x = 1, y = 0; return a; } int t, ret; re原创 2017-07-29 10:16:25 · 222 阅读 · 0 评论 -
hdu 1018 Big Number
点这里斯大林公式n! = sqrt(2*pi*n)*(n/e)^n将两边去对数log10(n!) = 1/2log(2*pi*n) + n*log(n/e)得到位数注意 pi 和 e 的精度#include #include #include #define e 2.718281828459#define pi 3.1415926using names原创 2017-07-31 22:17:29 · 214 阅读 · 0 评论
分享