数学
Y390d
这个作者很懒,什么都没留下…
展开
-
分数取模
这里介绍一种分数取模的代码:假设要求 (1/m) mod p这里要引用小费马定理 a^p-1 mod p = 1 mod p (有兴趣的可以百度查下证明过程) ,这里对这个公式做点改动---> a^p-1=a^p-2 *a , 把 a 移到上述等式的右边有 a^p-2 mod p = a^-1 mod p ,那么这里,a^-1 mod p就是我们要求的,这个值的结果恒等于...原创 2018-04-07 19:40:29 · 20562 阅读 · 1 评论 -
POJ 3292 Semi-prime H-numbers 【数学素数筛法】
题目链接:http://poj.org/problem?id=3292题目:H_number 是 4n+1的数,H_prime 是以H_number为准的素数 (就是在H_number中除1和本身没有可以整除H_prime的数),问在N范围内,一共有几个H_prime数;思路:用数组A来存储H_primer数,用1来标记是,不是则用0;因为题目中的H_prime是切确的仅由两个H_...原创 2018-10-06 14:42:51 · 155 阅读 · 0 评论 -
POJ 1845 Sumdiv 【整数的素数分解+逆元+快速幂+约数和公式】
题目链接:http://poj.org/problem?id=1845题意:求A^B的约数和,结果取余思路:整数的素数分解:任意一个整数都能通过若干个素数相乘得到,n = p1^a1 * p2 ^a2 * p3^a3 *..... pk^ak;相应的代码模板可以自己网上找找,也可以参考下面的代码 (能将一个整数的所有pi 和 ai 求出并存入数组中)逆元:平常做的取模运算条件是 a...原创 2018-10-07 23:02:27 · 224 阅读 · 0 评论 -
POJ 2115 C Looooops 【扩展欧几里得】
题目链接:http://poj.org/problem?id=2115需要注意的有几点:第一: exgcd (a, b, x, y) ; 起初以为 y 的最小正整数解是 y = (y % a + a) % a;但事实上最小正整数解是 int tmp = a / gcd (a, b);y = (y % tmp + tmp) % tmp;第二: 如果题目要求的是x,表达式最好这样设...原创 2018-10-15 21:47:33 · 116 阅读 · 0 评论 -
ZOJ 4005 Lucky Man 【java大数开方(牛顿迭代法)】
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4005import java.util.*;import java.math.*;import java.io.*;public class Main { public static void main(String[] args) { Scan...原创 2018-10-19 18:28:54 · 337 阅读 · 0 评论 -
POJ 3101 Astronomy 【分数的最小公倍数+物理公式+java大数】
题目链接:http://poj.org/problem?id=3101思路:物理公式就不解释了 : ;求 的最小公倍数,因为 可能为分数,所以需要求分数的最小公倍数;分数的最小公倍数 : 分子的最小公倍数 / 分母的最大公约数分数的最大公约数 : 分子的最大公约数 / 分母的最小公倍数因为题目的数据范围很大,所以用java处理会方便点;需要注意的是去重,因为速度相同的情况...原创 2018-10-10 18:51:51 · 218 阅读 · 0 评论 -
POJ 1006 Biorhythms 【中国剩余定理】
题目链接:http://poj.org/problem?id=1006思路:中国剩余定理总结:n1, n2, n3; n % n1 = p; n % n2 = e; n % n3 = i;求最小正整数 n;a * n2*n3 % n1 = 1; 等价于 a * n2*n3 - 1 = k * n1 ---> a * n2*n3 - k*n1 = 1; 通过扩展欧几里得求出 a...原创 2018-10-10 23:05:33 · 105 阅读 · 0 评论 -
HDU 6273 Master of GCD 【差分思想+快速幂】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6273思路:记录乘2次数最小的值和乘3次数最小的值再用快速幂求解这个大多数人都能想到,比较棘手的就是n和m都是10^5,如果某个区间一个个的遍历去加1的话,会超时;这里用到了差分思想;比较好的博客:https://www.cnblogs.com/COLIN-LIGHTNING/p/84366...原创 2018-10-23 13:00:24 · 396 阅读 · 0 评论 -
HDU 6265 Master of Phi 【公式题(欧拉函数)】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6265思路:首先要确定欧拉函数的一个特例 phi(1) = 1; 在欧拉函数的公式中 phi (n) = n*(1-q1)*(1-q2)*(1-q3)..... 只有n == 1的时候是不适用这个公式的;其次,题目中要求的公式虽然感觉很复杂,但事实上,只要对公式整理一下,就能发现题目有很多地...原创 2018-10-23 22:16:55 · 381 阅读 · 0 评论 -
UVALive - 5012 Rescue 【二分答案+数学公式】
题目链接:https://vjudge.net/problem/UVALive-5012因为题目的答案有单调递增的特点,所以很容易想到用二分答案来做,难得地方就是check函数要如何写,也就是说,如果给你一个p,要如何在规定的时间范围内判断这个p能否满足题目的要求(摧毁所有的石头)。因为只能向左丢球,所以丢球的顺序肯定是从右向左丢的,比如说最右边的石头要想摧毁的话,你只能站在这个石头上向左...原创 2019-01-29 17:47:33 · 209 阅读 · 0 评论 -
Codeforces Round #538 (Div. 2) C. Trailing Loves (or L'oeufs?) 【数论】
题目链接:http://codeforces.com/contest/1114/problem/C一个十进制数的二进制展开式中,次幂最小的那个数就是这个二进制数中末尾0的个数,所以题目的问题可以改成求某进制数的展开式中最小的那个次幂,也就是 n! % (b^r) == 0,满足这个式子的情况下,r能取的最大值。这道题有一个结论非常重要,如果你不知道的话,是做不出来的。假设n!= p1...原创 2019-03-07 12:21:59 · 182 阅读 · 0 评论 -
Codeforces Round #550 (Div. 3) E 【数学】
题目链接:http://codeforces.com/contest/1144把字符串当作26进制数,通过 (L+R)/2 ,取中间值再转成字符串就是答案。因为字符串的长度很大,算出来的数会溢出,所以需要一些技巧。假设有两个字符串 abc, efg那么就有 通过不断的 % 26得到每个位的数字。我们可以发现的是,我们其实只需要对括号内的数字 %26 就能得出结果了。...原创 2019-04-01 22:59:47 · 1634 阅读 · 0 评论 -
UVALive 7045 - Last Defence 【辗转相除】
题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=5057思路:假设 A = 7, B = 3 ;第一行的蓝色矩形是 7 ,第二行以及后面的蓝色矩形都是 3,黄色部分是减去得到的值;可以发现的规律是...原创 2018-10-06 09:57:37 · 252 阅读 · 0 评论 -
POJ 2635 The Embarrassed Cryptographer 【千进制高精度取模 / JAVA】
题目链接:http://poj.org/problem?id=2635题目:如果数K能被L以内的素数不包括L整除,输出 BAD 和这个素数,否则 GOOD;思路:高精度取模能够处理大数的取模,最基本的是十进制的取模,要想不超时,可以3位为一个单位取模;如果这个大数有100位,那么3位为一个单位取模只需要 100/3次,时间上有很大优化;这里素数要用素数筛法预先打表#inclu...原创 2018-10-05 20:19:13 · 187 阅读 · 0 评论 -
Educational Codeforces Round 49 (Rated for Div. 2) C 【数学+贪心】
题目链接:http://codeforces.com/contest/1027/problem/C题意: 给出几个数字,一个数字只能用一次,取4个数字构成矩形,要求周长的平方除以面积尽可能的小;思路:大多数人应该都能得出 b/a+a/b这个公式((2*(a+b))^2/(a*b),这个公式化简得到),只要矩形的长和宽 a,b 能让 b/a+a/b尽可能小就行了;最初得到的结论就是,a和...原创 2018-08-19 15:46:51 · 167 阅读 · 0 评论 -
Codeforces Round #505 (div1+div2) B 【数学】
题目链接:http://codeforces.com/contest/1025/problem/B题意:给出n个数对,一个数对有两个数字,输出一个值,这个值能整除每个数对中任意一个数字,并输出这个值,多个解输出一个就行,这个值如果是1,那么就输出-1;思路:(我自己平时最怕的就是数学题,一些整除或者倍数关系什么的,可能会表述错误,但是代码是能AC的,要是文字说明看不懂的话就直接看代码吧...原创 2018-08-20 15:45:13 · 273 阅读 · 0 评论 -
UVA - 11582 Colossal Fibonacci Numbers! 【数学】
题目链接:https://cn.vjudge.net/problem/UVA-11582直接看代码吧,难点就在于精度和溢出问题;#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<cmath>#include<...原创 2018-08-23 17:39:10 · 106 阅读 · 0 评论 -
Codeforces Round #506 (Div. 3) D 【枚举+数学取模】
题目链接:http://codeforces.com/contest/1029/problem/D思路:把数字拆成 (x*pow(10,i) + y) mod k == 0 ,用map存储位数为x对应的mod k的个数;用 (k - x*pow(10,i)mod k) 去找对应的 y mod k 存储的结果,速度更快;关键:(k-x*pow(10,i)mod k)mod k == y m...原创 2018-08-25 17:26:30 · 142 阅读 · 0 评论 -
POJ 1001 Exponentiation 【大数相乘】
题目链接:http://poj.org/problem?id=1001要注意的细节都在代码注释上面,只要正常的做矩阵乘法就行了;(小数点的位置,前导零和末尾0等等)#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<cma...原创 2018-09-07 21:40:25 · 126 阅读 · 0 评论 -
UVA - 11806 Cheerleaders 【容斥定理+排列组合打表】
题目链接:https://cn.vjudge.net/problem/UVA-11806题意:(蓝书 P107)思路:正向想问题会有点复杂,反过来想,假设 A为第一行一个都不放,B为最后一行一个都不放,C为第一列一个都不放,D为最后一列一个都不放,那么答案一定是不包括这些集合的,n*m放k个石头,有c(n*m,k)种方法,那么答案就是c(n*m,k)减去所有包含ABCD某个或者某几个的...原创 2018-09-02 18:16:51 · 181 阅读 · 0 评论 -
POJ 2602 Superlong sums 【大数相加】
题目链接:http://poj.org/problem?id=2602思路:每个位数相加,大于9就进位,题目不难,比较有意思的是输入输出的问题;如果你求出来的数用数组存着,然后一个一个的输出,从估算的时间上看,好像很充裕,但事实上一定会超时,哪怕用scanf和prinrf,可以看看这题在discuss情况,解决方法就是把他存在一个char数组里,然后输出的时候直接printf("%s") ...原创 2018-09-06 20:32:50 · 181 阅读 · 0 评论 -
HDU 5980 Find Small A 【二进制数】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5980题意:一个字符8位二进制数,问一组数有几个 二进制的 97;思路: a%256(二进制 1 << 8)能够取a的二进制的后8位的数字,a/= 256 是去掉后8位的二进制;#include <ext/pb_ds/assoc_container.hpp>#in...原创 2018-09-24 18:18:14 · 237 阅读 · 0 评论 -
EOJ Monthly 2018.9 (based on Trial Round #3) D. 素数子序列 【数学:三胞胎素数】
题目链接:https://acm.ecnu.edu.cn/contest/106/problem/D/思路:(摘录)n=1: 给一个质数可以。如果要填的话,就填一个质数。 n=2: 如果 p1>2 且 p2>2,显然不行。所以肯定有一个等于 2,不妨令 p1=2(等会别忘了讨论 p2=2 的,或者 reverse 一下),只要检查 p2 和 p2+2是不是都是素数即可(孪...原创 2018-10-01 10:08:39 · 890 阅读 · 0 评论 -
HDU 5976 Detachment 【逆元+打表】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5976题意:一维的大小可以想象成一条线的长度,二维的大小可以当成矩形的面积,三维的大小可以当成长方体的体积,以此类推,四维就是4个长度相乘,五维就是五个长度相乘,问最大大小是多少;思路:比较容易猜测的情况就是,一个线段尽可能的分成多个,分成的小线段两两之间差值尽可能小,而且最短的长度尽可能长...原创 2018-09-26 21:34:22 · 148 阅读 · 0 评论 -
Codeforces Round #511 (Div. 2) C. Enlarge GCD 【暴力枚举+素数晒法】
题目链接:http://codeforces.com/contest/1047/problem/C题意:删去尽可能少的数,得到一个比原先的gcd大的gcd,如果没有就输出-1,有就输出删除的个数;思路:用素数晒法,去枚举大于g(最初的gcd)的数,计数数组中有几个数能被g整除,取个数的最大值;要注意的是,如果只有两个数 1 2,那么可以删除1这个数得到更大的gcd;#includ...原创 2018-10-03 19:53:53 · 168 阅读 · 0 评论 -
codeforces #502 C The Phone Number【数学】
题目链接:http://codeforces.com/contest/1017/problem/C题意:给出n,输出由1到n排列的数列中最长上升子序列的长度+最长递减子序列长度和的最小的数列,如果有多个,输出其中一个;思路:假设n是9,那么正确的排列方式是 789 | 456 | 123 ,我们可以看到,用 | 分开的单个区域各自都为一个独立的上升子序列,从左往右看,每一个区域的的上升子...原创 2018-08-11 16:19:21 · 197 阅读 · 0 评论