数论
become__better
大胆去问,大胆去做,效率
展开
-
Aladdin and the Flying Carpet LightOJ - 1341 (算术基本定理)
题目地址:http://lightoj.com/volume_showproblem.php?problem=1341题目大意:长方形面积为a,在最小边大于等于b的情况下,有多少种。题目是关于关于因子个数的,先用唯一分解定理求出a的因子数是多少,再用循环减去1~b-1中a的因子数。注意要特判:b*b与a的关系,即可以控制时间复杂度在1e6,又可以防止出错。图片来自于百度百科#includ...原创 2019-07-06 20:03:42 · 146 阅读 · 0 评论 -
GCD - Extreme (II) UVA - 11426 (欧拉函数)
题意:G=0;for(i=1;i<N;i++)for(j=i+1;j<=N;j++){G+=gcd(i,j);}给出n,求出想应的G思路:进行打表。G[i]表示要求的值,a[i]表示从1–(i-1)与i的GCD之和。可以推出G[i]=G[i-1]+a[i]。所以我们的重点在于求出a[i]。这里就需要对欧拉函数进行利用了,很巧妙。...原创 2019-07-18 21:04:53 · 161 阅读 · 0 评论 -
Emoogle Grid UVA - 11916(方案数 BSGS算法)
题意:有m*n的(m是横坐标,n是纵坐标)格子,有k种颜色可以涂,其中有b个格子不能涂色,并且格子(x,y)与(x+1,y)的颜色不能相同。已知n,b,求当m最小为多少时,格子方案数mod100000007为r。思路:格子左边没有涂色格子的格子颜色有k种选择,左边有涂色格子的只有k-1种选择。m最小必须放下b个不能涂色的格子,m为maxx(不能涂色格子的最大横坐标)。找出在此区间左边无涂...原创 2019-07-19 10:10:50 · 145 阅读 · 0 评论 -
C Looooops POJ - 2115(扩展欧几里得)
题目地址:http://poj.org/problem?id=2115题意:for (variable = A; variable != B; variable += C)variable= variable%2k.问循环是否能够终止,以及循环的次数。思路:扩展欧几里得的基础题。假设循环x次,则a+cx=b(mod 2^k)cx=(b-a)(mod 2^k)cx+2ky=(b-a)...原创 2019-07-19 10:26:29 · 88 阅读 · 0 评论 -
Prime Time UVA - 10200(素数+前缀和)
先素数打表,再将n2 + n + 41之中的素数个数打表前缀和即可,不过最后精度有点迷,不知哪位大佬能解释一下。#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<algorithm>...原创 2019-07-19 11:38:20 · 136 阅读 · 0 评论 -
Death to Binary? POJ - 2116(模拟 斐波那契数列)
题目地址:http://poj.org/problem?id=2116思路:输入两个斐波那契数列基数制的数,转换成十进制,相加,再把这三个十进制数转换成规范性的斐波那契数列基数制的数。注意输入的斐波那契数列基数制的数可能有零。在转换成规范性的斐波那契数列基数制的数时,直接将十进制数化成尽可能大的斐波那契数列基数位即可。当斐波那契数列基数的第n位是1,第n-1位不可能也是1,因为 Fn = F...原创 2019-07-21 18:19:14 · 180 阅读 · 0 评论 -
Farey Sequence POJ - 2478(欧拉函数)
题目地址:http://poj.org/problem?id=2478Fn与Fn-1相比多了与小于n并且n互质的组合,增加的个数为phi(i),Fn实则是欧拉函数的前缀和。打表,求前缀和即可。#include<stdio.h>#include<math.h>#include<algorithm>#include<iostream>#inc...原创 2019-07-21 18:32:39 · 133 阅读 · 0 评论 -
The Super Powers UVA - 11752 (数论)
当一个数用指数形式表示时ab,当b不是素数时,ab一定是super power,那么b最小可以取4。因为范围是264,b最小为4,那么a最大的范围是216。我们只需要从2开始一直到216,将它们的非素数幂加入set(自动去重)中即可。注意用 unsigned long long 和最后添加1.#define _CRT_SECURE_NO_WARNINGS#include<iostrea...原创 2019-07-21 19:27:43 · 160 阅读 · 0 评论 -
扩展欧几里得
void Ex_gcd(int a, int b, int &x, int &y){ if(b == 0)//递归出口 { x = 1; y = 0; return; } int x1, y1; Ex_gcd(b, a%b, x1, y1); x = y1; y = x1-(a...原创 2019-07-01 19:51:52 · 116 阅读 · 0 评论 -
Harmonic Number (II) LightOJ - 1245 (整除分块)
题目地址:http://lightoj.com/volume_showproblem.php?problem=1245以n=12 为例i123456789101112n/i1264322111111[n/i]只有2√n个不同的解(按住Alt键,41420可以按出√)先求出前sqrt(n)项和:即n/1+n/2+…+n/s...原创 2019-07-11 12:39:20 · 237 阅读 · 0 评论 -
Harmonic Number LightOJ - 1234 (调和级数+欧拉常数)
题目地址:http://lightoj.com/volume_showproblem.php?problem=1234求f(n)=1/1+1/2+1/3+…+1/n的值方法一:公式法~~(不百度,想不出来)~~f(n)=ln(n)+1/2n+C(欧拉常数)(实用于n较大时)C=0.57721566490153286060651209n小于等于1e4时,打表;大于时,用公式。#inclu...原创 2019-07-11 11:21:18 · 160 阅读 · 0 评论 -
Goldbach`s Conjecture LightOJ - 1259 (素数)
题目地址:http://lightoj.com/volume_showproblem.php?problem=1259基础题,求一个数n,可以分解成几对素数(a,b)和,且a<=b。思路:先素数打表,再循环求一下即可。本题在于卡内存,看代码。#include<iostream>#include<cstdio>#include<cstdlib>...原创 2019-07-08 19:11:27 · 102 阅读 · 0 评论 -
Pairs Forming LCM LightOJ - 1236 (唯一分解定理)
题目地址:http://lightoj.com/volume_showproblem.php?problem=1236题意:counts the number of pairs (i, j) for which lcm(i, j) = n and (1<=i ≤ j<=n).注意:i ≤ j 我们先不考虑i和j的大小关系,对于i和j,在p1数位上,一个可以取任意值(0-a1),另...原创 2019-07-12 20:36:44 · 188 阅读 · 0 评论 -
Mysterious Bacteria LightOJ - 1220 (惟一分解定理)
题目链接在这里x=bp,给出x,求p的最大值。x只有b一项组成,b需要包括所有的p1,p2,…,pn。b=p1c1p2c2…pncn。x=bp=(p1c1p2c2…pncn)p。那么p是p1,p2,…,pn的·最大公因子。注意的是,x在有符号数int范围内,x为负数时,p只能为奇数。#include<iostream>#include<cstdio>#incl...原创 2019-07-13 09:59:24 · 140 阅读 · 0 评论 -
Fantasy of a Summation LightOJ - 1213 (快速幂取模)
题目地址:http://lightoj.com/volume_showproblem.php?problem=1213很简单的一道题。res = ( res + A[i1] + A[i2] + … + A[iK] ) % MOD;你会发现A[i1] 出现的次数是nk,k个循环,一个循环n次。那么a[0]在a[i1] 出现的次数为nk-1,可以看出a[i](0<=i<n ) 在a...原创 2019-07-13 11:14:53 · 113 阅读 · 0 评论 -
Sigma Function LightOJ - 1336(算术基本定理 因子和)
题目地址:http://lightoj.com/volume_showproblem.php?problem=1336题意:求从1到n之间因子和为偶数的数的个数。我们知道 :偶X奇=偶 偶X偶=奇 奇X奇=奇那么只要有一个(1+pi+…+piai)之和为偶数,因子数之和便是偶数,只有(1+pi+…+piai)之和全为奇数,因子和才为奇数。我们可以求从1到n之间因子和为奇数的数的个数,再...原创 2019-07-09 20:19:52 · 181 阅读 · 0 评论 -
Large Division LightOJ - 1214 (大数 模运算)
题目地址:http://lightoj.com/volume_showproblem.php?problem=1214求a%b是否为0 a是大数,b是int利用 a*b%p=(a%p)*b%p 和 (a+b)%p=((a%p)+b)%p可以化成a=m1 * 10x1+m2 * 10x2+…+mn*10xn进行求解注意a可能是负数。#include<iostream&...原创 2019-07-13 11:45:56 · 138 阅读 · 0 评论 -
Help Hanzo LightOJ - 1197 (素数 筛法)
题目地址:http://lightoj.com/volume_showproblem.php?problem=1197求区间[a,b]之间有多少素数, (1 ≤ a ≤ b < 231, b - a ≤ 100000).打表爆内存,循环判断是不是素数超时,b - a ≤ 100000数组可以放下,用筛法。类似于素数筛,在[a,b]区间,将素数的倍数(不包括素数本身),进行标记 ,用a/s...原创 2019-07-14 10:35:53 · 146 阅读 · 0 评论 -
Trailing Zeroes (III) LightOJ - 1138 (二分 数论)
题目地址:http://lightoj.com/volume_showproblem.php?problem=1138给出q,当n为何值时,n!末尾有q个零。我们知道零是由10决定的,10可以分解为素数2和5,而2的数量大于5,根据木桶定理,零的个数就是1-n中5的个数。5含有1个5,10含有一个5,25含有两个5,那么n可能是大于等于5,小于等于5*q,以此为界限进行二分即可。#inclu...原创 2019-07-14 10:50:05 · 202 阅读 · 0 评论 -
Bi-shoe and Phi-shoe LightOJ - 1370 (欧拉函数)
题目地址:http://lightoj.com/volume_showproblem.php?problem=1370题目大意:给你一个数a,你求出一个数b的欧拉函数大于a,并且b尽量小,给你n个a,求b的最小和是多少。思路:先打表出欧拉函数,再用一个数组标记给出a对应b的值,数组的下标为a,值为b。注意存在:存在phi[i]>phi[j] 但i<j,并且存在a没有与他相等的ph...原创 2019-07-05 20:01:12 · 219 阅读 · 0 评论 -
Leading and Trailing LightOJ - 1282(数字推导+快速幂+fmod/modf函数)
题目地址:http://lightoj.com/volume_showproblem.php?problem=1282至于后三位,用快速幂对1000取模即可。fmod函数z=fmod(x,y) z相对于浮点数x对y的取模#include<iostream>#include<cstdio>#include<cstdlib>#include<...原创 2019-07-07 20:24:29 · 200 阅读 · 0 评论