随笔分类 - 数学类题目
摘要:题目:http://acm.timus.ru/problem.aspx?space=1&num=1049题意:给十个数,假设十个数相乘后所有因子个数为 sum,求的 N = sum % 10;忘了是根据什么了,有一个结论:任何一个数都可以写成:M = P1 ^ a1 * P2 ^ a2 * P3 ^ a3 ~~~~~ Pn ^ an;那么 M 的因子个数就是 sum = (a1 + 1) * (a2 + 1) * (a3 + 1) ~~~(an + 1); ai < 10000,注意随时取余View Code 1 const int N = 10010; 2 int prime[
阅读全文
摘要:题目:http://acm.timus.ru/problem.aspx?space=1&num=1352题意:首先定义梅森尼质数:符合 2 ^ p - 1是素数的数,现在给出一个 n 让你输出一个 p 满足 2 ^ p - 1 是第 n 个梅森尼质数 ( n < 39)打表的过的,就没什么可说的了View Code 1 const int x[]={0,2,3,5,7,13,17,19,31,61,89, 2 107,127,521,607,1279,2203,2281,3217,4253,4423, 3 9689,9941,11213,...
阅读全文
摘要:先说一下叉积求面积View Code 1 struct node 2 { 3 int x; 4 int y; 5 }point[N]; // 数组保存多边形顶点,但是必须按顺序(逆或顺)保存 6 double area(int n) // n 表示多边形的顶点数 7 { 8 int i; 9 double a = 0;10 for(i = 0; i < n; i++)11 {12 int j = (i + 1) % n; // 保证最后一个和第一个连起来13 a += point[i].x * point[j...
阅读全文
摘要:今天突然看见凸包题,然后翻看自己以前学的时候写的博客,竟然发现那个学习的链接没了,就去看了算法导论,然后对着模板,把这个算法看了一遍,东西还是要多看几遍的,每次看都有不同的感受,总会有那么一次,你会发出一句感慨:呃,原来是这样啊!现在把模板整理一下吧先说一下求解步骤:1.首先在输入的点集中找出一个对照点,放入到 p[0]中,这个对照点就是 在点集的最下,最左的那个点2.对 1 ~ n - 1的点按相对于 对照点的极角从小到大排序,如果极角相同那么就按距离对照点的远近从小到大排序3.把输入的点集的前两个点放入到栈中,然后依次扫描剩余的点,把不是凸包顶点的点从栈中剔除,沿逆时针方向通过凸包时,在每
阅读全文
摘要:题目:http://poj.org/problem?id=1319题意:给出一个容器的尺寸 a * b,在这个容器里装直径是单位长度的管子,有两种装的办法,一种是题目里面给的图 a,图 b,另一种是图 c,图 d,问最多可以装多少个管子,前两个图那样的很好计算,管子的数目就是 floor(a) * floor(b) (floor(x)是指不大于 x 的最大正整数,如 floor(2.8) = 2),如果是后面两组(交错装)那么就要考虑,是 a 为行数,还是 b 为行数两种情况了,后面两种方法画图可以知道,除了第一行管子的高度是 1,其他行的高度为 2 * ( sqrt(3) / 4), 如果宽
阅读全文
摘要:题目:http://poj.org/problem?id=3286假设从 1 到 m的数中 含有 0 的个数为 numm,从 1 到 n 含有 0 的个数为 numn 那么要求 从 n 到 m 的数里含有 0 的个数 ans = numm - numn + sum(n 里面含有 0 的个数)对于给的数N,从右到左枚举每一位,当枚举第 i 位时,它左边的数记为 left,从它自身到最后记为 right, 1 若第 i 位为 0,说明 N里面本身有一个0 , 求出比 left 0 right(— 0 —) 小的数+1 加至 sum ; 2 若第i 位不为0,则 N 该位没0,那么小于 left 0
阅读全文
摘要:题目:http://poj.org/problem?id=3150题意:给出 n 个数构成一个环,给出 m d k,每一个数从它的两边(连续的)各找 d 个数和这个数相加 再取余m后更新这个数,问 k 次操作后,输出新的n 个数的顺序。不知道怎么优化,看了别人的解析 http://hi.baidu.com/moon_1st/item/0381d80a85fd258a3d42e2f0,循环矩阵经过 k 次幂后仍然是循环矩阵,而且有 a[i][j] = a[i - 1][j - 1]成立,这样转移矩阵的下一列就可以由这一列转换过去,降低复杂度题目:http://poj.org/problem?id
阅读全文
摘要:题目:http://poj.org/problem?id=3318题目中明确交代,0(n ^ 3) 会 TLE,可是一开始还就没看见,以为在计算矩阵时加两个优化可在 2s 挤过去呢,然后就TLE了三次,看别人的说是有一个结论 A * B * X == C * X时,有 A * B == C成立(成立的概率很大),然后 X 就是用随机函数求的View Code 1 #include <stdio.h> 2 #include <string.h> 3 #include <iostream> 4 #include <algorithm> 5 #incl
阅读全文
摘要:题目:http://poj.org/problem?id=3070算是矩阵快速幂的模板吧View Code 1 #include <stdio.h> 2 #include <string.h> 3 #include <iostream> 4 #include <algorithm> 5 #include <vector> 6 #include <math.h> 7 #define N 160 8 #define mod 10000 9 #define _clr(a,val) (memset(a,val,sizeof(a))
阅读全文
摘要:做一道线段树的题目看到了反素数的概念,然后就去看了一下,线段树倒是没做出来,学习了一下反素数首先给出定义:对于任何正整数x,其约数的个数记做g(x).例如g(1)=1,g(6)=4.如果某个正整数x满足:对于任意i(0<i<x),都有g(i)<g(x),则称x为反素数.反素数的两条性质:1.一个反素数的质因子必然是从2开始连续的质数. 2:p=2^t1*3^t2*5^t3*7^t4.....必然t1>=t2>=t3>=....View Code 1 // 求解反素数的过程 2 3 // num:当前枚举到的数 4 // k:枚举到的第k大的质因子 5 //
阅读全文
摘要:详细的高斯消元法求解线性方程组的解的c代码。虽然博主的代码有点乱,可是他的解释还是很清楚的,而且也给出了一些oj上的用高斯消元法求解的题目 http://hi.baidu.com/czyuan_acm/blog/item/ebf41f8fdc0e1ee6f01f36e9.htmlpoj 2947http://poj.org/problem?id=2947题目的意思就是:给你 n 种零件和 m 个技术工人,然后有 2 * m行输入,首先给一个 k 表示该技术工人在他工作时间内生产了哪些种类的零件,然后给出这个工人开始工作的星期数,和结束工作的星期数。问 n 种不同的零件各用多少天生产,如果解唯.
阅读全文
摘要:poj 1026 http://poj.org/problem?id=1026题意:给你(乱序)数字,数字表示下面输入的字符串变幻的位置。比如说事例给的10(n)4 5 3 7 2 8 1 6 10 91(k) Hello Bob1 代表对字符串中每一个字符进行变幻的次数。变幻的方式就是1 2 3 4 5 6 7 8 9 10(十个数排完序后)H e l l o B o b4 5 3 7 2 8 1 6 10 9这样经过 1 次变幻后,H到第四个位置(也就是字符串下标为 3 的位置)e变幻到第 5 个位置,依次类推。当然,如果 k 不等于 1,例如 k = 4, H 的变幻路径为 4 ->
阅读全文
摘要:凸包问题poj 1113http://poj.org/problem?id=1113题意就是给你一些点,然后让你求凸包并求出这个凸包的周长,由于题目中有要求,所以求出周长后还要再加上一个以输入 L 为半径的园的周长,才是所求的答案View Code 1 #include <stdio.h> 2 #include <string.h> 3 #include <iostream> 4 #include <algorithm> 5 #include <stdlib.h> 6 #include <math.h> 7 #define
阅读全文
摘要:题目http://poj.org/problem?id=1584题意:判断一个多边形是否为凸多边形,如果不是则输出”HOLE IS ILL-FORMED“,如果是则继续判断给定的一个圆是否在该凸多边形内,如果不在输出”PEG WILL NOT FIT“,否则输出”PEG WILL FIT“;思路:用一维数组保存给的顶点,增加两个点构成一个使得数组从0 到n + 1 构成一个环。由于给点的点是按顺时针或逆时针的,所以先算出point[0],point[1],point[2]三个点构成的两条边的叉积,作为判断标准。如果一个多边形为凸变形,那么按照一个方向枚举每两条边时叉积的符号是相同的。然后判断两
阅读全文
摘要:题目http://poj.org/problem?id=1408题意:在x轴,x = 1,y轴,y = 1.这四条线段上给出一些点,然后把x轴上的点和x = 1 上的点一一对应连接,把y轴上的点和y = 1上的点也一一对应连接,在这些连接线组成的四边形(除了定点外,不含其它的点)中,找出一个面积最大的思路:求出所有的交点,然后求每一个四边形面积,找出最大输出即可,纠结了很久都不出结果,就是因为一个点保存的时候x写成了y,真杯具。View Code 1 #include <stdio.h> 2 #include <string.h> 3 #include <math
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1018这个题目好像还是在11年暑假看的呢,一直想用那个大整数乘法把N!求出,然后再用一个strlen函数求出位数,可是一直比较懒,都不愿意写,今天看书的时候,发现书上的讲解太牛了,虽然我不是很懂,还是拿来和大家分享一下吧。思路1. 这道题可以采用蛮力法,根据定义,直接求解。所谓N!位数,就是lg(N!)+1(不是很懂),根据数学公式: N ! = 1*2*3……N <==> lg(N!)=lg(2)+lg(3)+……+lg(n);所以呢 代码如下 1 #include<stdio.h>
阅读全文

浙公网安备 33010602011771号