基础数学
文章平均质量分 90
ACdreamers
这个作者很懒,什么都没留下…
展开
-
POJ2527(两多项式取余)
题目:Polynomial Remains #include using namespace std;const int N = 10005;int n,k,i;int val[N];int main(){ while(cin>>n>>k) { if(n==-1&&k==-1) break; for原创 2013-05-07 15:14:19 · 1963 阅读 · 1 评论 -
求n!,C(n,m)和A(n,m)最后的非零位。
求n!,C(n,m),A(n,m)最后的非零位。 先说说怎样求n!最后的非零位吧!比如找10!最后的非零位,由于质因数2和5的组合之后末尾会产生0,所以我们先把2,5的质因子全部去掉,由于2的数目要比5多,所以我们要在最后考虑多余的2对末尾的影响。比如:1*2*3*4*5*6*7*8*9*10去掉2,5的因子后就是:1*1*3*1*1*3*7*1*9*1,由于去原创 2013-05-08 21:10:07 · 1579 阅读 · 0 评论 -
八进制小数转化为十进制小数
题目:Octal Fractions 利用迭代法就行,比如把八进制小数0.d1d2d3d4转化为十进制小数,则就是利用下面的式子。从最后一位开始往前计算,从式子的上端往下计算,注意把每次计算的结果都当字符串处理。#include #include #include using namespace std;const int N=1005;char s原创 2013-06-06 12:13:34 · 12431 阅读 · 0 评论 -
HDU4321(位运算二进制1的统计)
题目:Arcane Numbers 2 #include #include #include using namespace std;typedef long long LL;void Solve(LL a,LL b,LL n){ LL cnt=0; LL max=b+a*n; for(LL i=0;i<64;i++)原创 2013-07-10 14:01:11 · 1844 阅读 · 1 评论 -
HDU4357(数学思维题)
题目:String change 把26个字母看成0~25对应的数字,当数慢慢增大时就对26取模,则字符串有一个总和s1,要使其变为末状态的总和s2;那么每交换一次s1要加2,故,s1+s2必须为偶数。两个字母单独处理,两个以上时,以三个数字为例,(a,b,c)为三个数,则有(a,b,c)->(a,c+1,b+1)->(c+2,,a+1,b+1)->(c再分别和a,b各交换12次,转载 2013-07-20 14:41:01 · 1962 阅读 · 0 评论 -
HDU4364(模拟矩阵乘法)
题目:Matrix operation 本题就是直接模拟矩阵乘法即可,主要是这里对十六进制的处理有技巧。#include #include #include using namespace std;int a[4][4];int ans[4][4];int x[4][4]={ 0x2,0x3,0x1,0x1, 0x1,0x2,0x原创 2013-07-21 19:16:38 · 1188 阅读 · 0 评论 -
HDU4382(特殊的矩阵连乘)
题目:Harry Potter and Cyber Sequence Generator题意,有两个容器C1,C2,初始的时候C1中有一个数的值为V,给你K个操作,每次都重复这K个操作N遍,最后问你C2中的数是 多少。N1:循环操作的次数巨大,敏感的想到这是矩阵连乘的题目。2:K个操作可以得出一个矩阵,N个K操作就是这个矩阵的N次方3:最后再乘以初始矩阵原创 2013-07-29 09:21:35 · 1524 阅读 · 0 评论 -
BZOJ3231(矩阵连乘,稍有点复杂)
题目:3231: [Sdoi2008]递归数列 题意:一个由自然数组成的数列按下式定义: 对于i :ai = bi对于i > k: ai = c1ai-1 + c2ai-2 + ... + ckai-k其中bj和cj (1)是给定的自然数。写一个程序,给定自然数m <=n, 计算am +am+1 + am+2 + ... + an,并输出它除以给定自原创 2013-07-22 15:45:17 · 2089 阅读 · 0 评论 -
HDU4611(找循环节)
题目:Balls Rearrangement#include #include #include using namespace std;typedef long long LL;LL n,a,b,x,y,s,t;LL gcd(LL a,LL b){ return b? gcd(b,a%b):a;}int main(){ int T;原创 2013-07-25 10:52:09 · 1786 阅读 · 0 评论 -
HDU1588(矩阵连乘求和)
题意:已知g(i)=k*i+b,然后求,F(n)是Fibnacci数列,k,b,n,M是题目给定的。分析:我们可以认为,其中那么就可以有:那么我们就可以先快速幂计算出 AND ,然后再二分求和就可以了。原创 2013-08-09 10:29:26 · 1630 阅读 · 0 评论 -
HDU4577(2013年ACM杭州赛区邀请赛B题)
题目:X-Boxes import java.math.BigInteger;import java.util.*;public class Main { public static void main(String[] args) { Scanner cin=new Scanner(System.in); long[] f = new long[30];原创 2013-08-10 18:06:55 · 2362 阅读 · 0 评论 -
分块计算
题目:http://acm.upc.edu.cn/problem.php?id=2219 题意:It's easy for ACMer to calculate A^X mod P. Now given seven integers n, A, K, a, b, m, P, and afunction f(x) which defined as following.f原创 2013-08-22 17:12:57 · 1671 阅读 · 0 评论 -
NKU两题简单题解析(递归分析与位运算技巧)
题目:http://acm.nankai.edu.cn/p1002.html 题意:对给定的f(n),当 n>=50025002 的时候,f(n)=n-5;当 n 分析:注意本题给出数据n很大-2147483647的,那么在这里,虽然不能直接递归,但是我们还是可以用递归的思想。具体做法就是: 如果n>=50025002,那么我们可以直接计算,如果n上去计算,那么我们可以原创 2013-08-23 10:41:05 · 1471 阅读 · 0 评论 -
HDU3509(构造矩阵)
题目:Buge's Fibonacci Number Problem #include #include #include using namespace std;const int N=55;__int64 x[N][N],y[N][N],s[N][N],A[N],B[N],F1[N],F2[N],tmp;int f1,f2,a,b,K,n,m;int原创 2013-08-13 20:28:25 · 1254 阅读 · 0 评论 -
NJUST1712(形成三角形面积为整数的个数)
题目:1712 - Triangles 题意:给定三角形的三点,分别是A,B,C,它们的横纵坐标都属于整数,然后给定两个数n和m。要求满足:, 和这3个条件的三角形个数,并且对1000000007取余。 分析:由于用的是坐标,那么我们很容易想到用叉积来表示面积,那么就得到: 然后就可以很明显知道:与一奇一偶。 然后可以分析出答案就是:原创 2013-08-15 11:19:51 · 1615 阅读 · 0 评论 -
HDU3208(区间指数和)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=3208 题意:给两个数a和b,然后在闭区间[a,b]内的每一个数y都可以表示成x^k=y,要求x尽量最小,k尽量最大,然后求所有的k之和。 分析:对于这个题,我们首先要知道是基于以下的事实来计算的:对于一个数n,从1~n中假设有x个数是满足p^k形式的,这里的k最多到62,那么对于每一个原创 2013-09-03 14:13:44 · 2175 阅读 · 0 评论 -
HDU4405(概率DP求期望)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4405 题意:飞行棋,从0到n,置骰子,置到几就往前走几步,前进中会有捷径,比如2和5连到一起了,那你走到2时可以直接跳到5,如果5和8连到一起了,那你还可以继续跳到8,最后问跳到n时平均置几次骰子。也就是求期望。#include #include #include usin原创 2013-09-04 14:51:10 · 3119 阅读 · 0 评论 -
BZOJ3209(n的二进制表示中1的个数的乘积)
题目:花神的数论题 设 sum(i) 表示 i 的二进制表示中 1 的个数。给出一个正整数 N ,求 sum(1)至sum(N) 的乘积。#include #include #include using namespace std;typedef long long LL;const int N=100005;const int M=255;cons原创 2013-06-01 13:27:41 · 2659 阅读 · 0 评论 -
NYOJ516(优化)
题目:http://acm.nyist.net/JudgeOnline/problem.php?pid=516 不能直接逐项快速幂计算。#include #include #include #include using namespace std;typedef long long LL;const int N = 10000005;const LL M原创 2013-09-13 18:24:37 · 991 阅读 · 0 评论 -
SGU247(排列组合与大数运算)
题目:Difficult Choice 题目分析以及公式推导: import java.io.*;import java.util.*;import java.math.BigInteger;public class Solution{ public static BigInteger fac[]=new BigInteger[2013];原创 2013-05-09 17:01:59 · 1558 阅读 · 0 评论 -
HDU1066--高精度求阶乘最后非零位
题目:Last non-zero Digit in N! #include#include#define maxn 10001const int mod[20]={1,1,2,6,4,2,2,4,2,8,4,4,8,4,6,8,8,6,8,2};int lastdigit(char buf[]){ int len=strlen(buf),a[maxn],原创 2013-03-28 15:46:05 · 1513 阅读 · 0 评论 -
POJ1220(高精度进制转换)
题目:NUMBER BASE CONVERSION 就是后面的数字以a进制的形式给出,要求转化为b进制输出。#include #include #include #define MAXSIZE 60000char in[MAXSIZE];int oldbase,newbase;int a[MAXSIZE],b[MAXSIZE],r[MAXSIZE];原创 2013-05-04 20:37:00 · 1845 阅读 · 0 评论 -
大数开方(C++版)
题目:1153. Supercomputer题目大意:N=x*(x+1)/2,给你N (N 600),输出x分析:求sqrt(2*N)即可#include #include #include #include #include using namespace std;#define MAXN 20000int big(char s1[],char s原创 2013-05-04 21:18:28 · 4493 阅读 · 0 评论 -
大数开方(Java版)
题目:大数开方 Java代码:适合被开方数不超过1000位的。import java.util.*;import java.math.*;public class Main{ public static void main(String[] args) { Scanner cin=new Scanner(原创 2013-07-09 20:34:48 · 4212 阅读 · 0 评论 -
POJ3244(工科数学分析)
题目:http://poj.org/problem?id=3244 题意:给定n个三元组,对于任意两个三元组,设和,定义: ,求所有无序对的和。 分析:首先我们要知道: 简单分析一下这个结果是怎么得来的: 如果,那么: 这是一种情况,还有两种情况也是这个结果。所以结果成立。 那么我们分开计算三部分的和,然后除2就原创 2013-10-02 16:40:40 · 1956 阅读 · 0 评论 -
Bell数
Bell数的定义:第n个Bell数表示集合{1,2,3,...,n}的划分方案数,即:B[0] = 1; 每一个Bell数都是第二类Stirling数的和,即: 第二类Stirling数的意义是:S(n,k)表示将n个物体划分成k个非空的不可辨别的(可以理解为盒子没有编号)集合的方法数。很明显,每一个Bell是对应的第二类Stirling数之和。 B原创 2013-10-05 14:38:58 · 7870 阅读 · 0 评论 -
HDU2650(高斯整数环)
我们把集合:叫做高斯整数环,其中Z表示通常的整数环,而用表示复数域上的整数环。那么什么是环呢?就是通过加减乘三种运算后,仍然能满足本身性质的就叫做环。 范的定义:设,,定义a的范为 设,则(1)为非负整数,并且(2)(3)若,则 逆的定义:设,如果存在,使得,则称为中的乘法可逆元,简称可逆元,并且叫做的逆。 高斯整数是可逆元的充要条件是:中只有4原创 2013-08-16 19:08:17 · 6465 阅读 · 2 评论 -
Codeforces344_C(数学思维)
题目:http://codeforces.com/contest/344/problem/C #include #include #include #include using namespace std;typedef long long LL;LL a,b;int main(){ cin>>a>>b; if(a>b)原创 2013-09-25 13:49:22 · 1399 阅读 · 0 评论 -
超级幂分析
题意:如果一个数至少是两个不同的正整数的幂,那么它被称为超级幂,按升序输出1至2^64-1之间的所有超级幂。 #include #include #include #include #include using namespace std;typedef unsigned long long LL;bool prime[70];set s;s原创 2013-10-11 17:26:29 · 3222 阅读 · 0 评论 -
HDU3892(多项式域欧几里德算法)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=3892 题意:给出n个多项式,如果它们模999983等于0的所有根中有相同的就输出“YES”,否则输出“NO”。 分析:假设有多项式a和多项式b,如果a = q*b + r,假设a和b有公共的根x,则取x的时候,a = q*b + r = 0且b = 0.所以此时r也等于0. 所以a,原创 2013-10-13 20:57:04 · 3948 阅读 · 0 评论 -
整数域上的多项式辗转相除
题目:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1892 题意:求两个多项式的最大的公共多项式。 #include #include #include #include #include using namesp原创 2013-10-14 20:09:17 · 2902 阅读 · 0 评论 -
五边形数定理
设第n个五边形数为,那么,即序列为:1, 5, 12, 22, 35, 51, 70, ... 对应图形如下: 设五边形数的生成函数为,那么有: 以上是五边形数的情况。下面是关于五边形数定理的内容: 五边形数定理是一个由欧拉发现的数学定理,描述欧拉函数展开式的特性。欧拉函数的展开式如下: 欧拉函数展开后,有原创 2013-10-03 21:16:08 · 12855 阅读 · 2 评论 -
圆的反演变换
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4773题意:给定两个圆,告诉半径和圆心,它们是相离的,在这两个圆外给定一个点p,求符合条件:过点p的圆且与已知的两个圆外切的所有圆的总数和它们的圆心坐标和半径。分析:根据题意,我们设已知两个圆的半径分别为和,它们的圆心分别为和,设点p的坐标为并设要求的圆的圆心原创 2013-11-27 14:52:47 · 27918 阅读 · 3 评论 -
圆面分割问题
题目:http://acm.hnu.cn/online/?action=problem&type=show&id=12610题意:已知圆周上有n个点,两两相连之后,最多能把圆面分成多少部分?结论:最多分成个部分。分析:我们可以用数学归纳法证明这个结论。第一步:很明显当n = 1,2,3,4时,答案分别是1,2,4,8符合公式。第二原创 2013-12-09 18:41:53 · 3172 阅读 · 0 评论 -
十进制快速幂
题目:https://www.smartoj.com/p/2297题意:矩阵F[][]满足以下递推式 输入八个整数n,m,a,b,c,d,e,f,输出F[n][m]%2012182013的值。分析:本题需要构造矩阵,那么首先我们根据递推式,可以构造可以看出,我们还需要求F[n][2]和F[n][1]的值。那么继原创 2014-01-23 19:05:21 · 3953 阅读 · 3 评论 -
康托展开
康托展开就是一种特殊的哈希函数,它的使用范围是对于n个数的排列进行状态的压缩和存储,例如要对9的全排列进行判重.没有必要开一个10^9的数组,同时内存也不允许开到那么大的数组.对此,有人提出了优化,即对于一个n的排列数,没有必要开到10^n,因为在一个排列中每个数只出现一次,所以只要前n-1位确定了,前N位就确定了.但是以上的想法仍不是可行的,因为N可以很大,例如15,所以便引入了原创 2012-09-15 14:34:24 · 8447 阅读 · 4 评论 -
关于ax+by+cz的最大不可表数
我们知道,对于两个数A,B,如果有A,B互质,那么()最大的不能表示的数为AB-A-B,且不能表示数的个数为: 那么,如果把它推广到三个数呢?定理一:设为正整数,,为非负整数,所不能表出的最大整数为M,那么当 时 定理二:设为正整数,,为非负整数,所不能表出的最大整数为M,原创 2014-01-19 17:12:08 · 4816 阅读 · 2 评论 -
平面分割问题
(1) n条直线最多分平面问题 题目大致如:n条直线,最多可以把平面分为多少个区域。 析:可能你以前就见过这题目,这充其量是一道初中的思考题。但一个类型的题目还是从简单的入手,才容易发现规律。当有n-1条直线时,平面最多被分成了f(n-1)个区域。则第n条直线要是切成的区域数最多,就必须与每条直线相交且不能有同一交点。这样就会得到n-1个交点。这些交点将第n条直线分为2原创 2013-02-07 23:33:33 · 2090 阅读 · 0 评论 -
Bell数的生成函数推导
设为Bell数,即集合{1,2,3,...,n}划分的方案数,易得 令为的指数生成函数,那么有 我们改变n,k求和的顺序,得到 分母n在这里碍事,我们对求导 为了求出,我们需要利用,即 得到,所以继续得到,带入计算得到所以Be原创 2014-02-09 14:55:37 · 3464 阅读 · 0 评论 -
确定最小的正整数n,使得n!的结尾恰好有1987个0
题目:确定最小的正整数n,使得n!的结尾恰好有1987个0。分析:我们首先来认识一个结论 设是在进制表示下各位数字之和,那么中素数的幂的指数为 。那么现在来证明这个结论: 设的进制表示为,那么则中素数的指数为 这样,题目就有了思路。我们知道末尾0的个数取决于中素数5的幂指数。也就是说确定一个数,使得中5的幂指原创 2014-02-09 14:00:26 · 2382 阅读 · 0 评论