-数学
文章平均质量分 80
virgoDd
Good afternoon,good evening and good night
展开
-
POJ 3993 Not So Flat After All(质因数)
Not So Flat After AllDescriptionAny positive integer v can be written as p1a1*p2a2*...*pnan where pi is a prime number and ai ≥ 0. For example: 24 = 23*31. Pick any two prime numbers p1 and原创 2014-09-02 09:51:01 · 577 阅读 · 0 评论 -
URAL 1762 Search for a Hiding-Place(数学·模拟)
题意 你在一个n*m个白色正方形格子组成的矩形的某个顶点格子 你沿着45度角的方向走 到了边界就改变方向90度 每次经过一个格子都改变他原来的颜(白或灰) 求你走到另一个顶点格子时矩形中有多少格子是灰色的这题可以用公式也可以直接模拟 模拟就是一直向右移n-1位 每次超过边界就可以把边界向右移m-1位 用cnt记录超过边界的次数 那么每次都会经过cnt个已经走过的格子 (每个格子最原创 2015-03-11 21:32:21 · 740 阅读 · 0 评论 -
POJ 1434 Fill the Cisterns!(二分)
题意 有n个互相连通的长方体水箱 给出每个水箱的位置和长宽高 判断放v体积的水时水面的高度 精确到两位小数可以把每个水箱的位置 底面积 和高存起来 然用体积v二分高度 就是要注意精度的处理 最好转换成整数运算import java.util.*;public class Main { static int N = 50005; static long[] b = n原创 2015-03-23 22:36:47 · 848 阅读 · 0 评论 -
HDU 3714 Error Curves(3分)
题意 求分段函数的最低点 每个点函数值为n个 a*x^2 + b*x +c (a>=0, |b|由于a是不小于0的 所以此分段函数的函数图像只可能是类似'V'形的 可以画图观察出来 那么求最小值就可以用三分来解决了#include using namespace std;const int N = 10005;const double eps = 1e-9;int a[原创 2015-04-07 17:56:22 · 708 阅读 · 0 评论 -
Codeforces 535C Tavas and Karafs(二分)
题意 有一个等差数列 从A开始 公差为B 然后n个询问 每个询问给定l,t,m 然后要求如果每次可以最多选择m个数 使这m个数-1 那么在t次操作中可以使l为左端点的最长序列中使所有数为0 输出这个最长序列的右端序号定理 序列h1,h2,...,hn 可以在t次时间内(每次至多让m个元素减少1) 全部减小为0 当且仅当 max(h1, h2, ...,原创 2015-04-15 16:26:19 · 1451 阅读 · 0 评论 -
hiho一下·41 骨牌覆盖问题·一(矩阵快速幂·费波拉契)
题意 求费波拉契数列第N项 1≤N≤100,000,000通过矩阵的幂 可以把一维递推的时间复杂度减小到O(logN) 主要就是快速幂的思想 对于m^n 若n=2^a1+2^a2+...+2^ak 那么m^n = m^(2^a1) * m^(2^a2) * ... * m^(2^ak) 那么只用看n转换为二进制后哪些位为1就可以快速求出m^n了#include原创 2015-04-13 17:09:52 · 964 阅读 · 0 评论 -
LightOJ 1215 Finding LCM(数论)
题意 已知LCM(a, b, c) = L 和 a、b、L 求最小的满足等式的c.把数展开为素因子积的形式后 GCD(a,b)就是a,b的公共素因子取在a、b中的较小指数 LCM(a,b)就是a,b的所有素因子取在a、b中的较大指数令m = LCM(a,b) 那么问题转化为了求最小的c满足 LCM(m, c) = L 那么最小的c就是L中不在m中的素因子和L原创 2015-07-12 10:46:06 · 1892 阅读 · 0 评论 -
UVa 11426 GCD - Extreme (II) (欧拉函数应用·O(N*logN))
题意 令 G(n) = sum{gcd(i, j) | 0 给你一个n 输出G(n)令 F(n) = sum{gcd(i, n) | 0 那么有递推式 G(n) = G(n-1) + F(n) , G(0) = 0 也就是说只用求出F(n) 就能递推求出 G(n)了 而求F(n)就比较容易了 对于i 设 x < i , gcd(x,i) = 1即x, n 互质原创 2015-08-09 17:52:29 · 1026 阅读 · 0 评论 -
LightOJ 1236 - Pairs Forming LCM (LCM·唯一分解)
题意 给你一个数n 求满足lcm(a, b) == n, a 容易知道 n 是a, b的所有素因子取在a, b中较大指数的积先将n分解为素数指数积的形式 n = π(pi^ei) 那么对于每个素因子pi pi在a,b中的指数ai, bi 至少有一个等于pi, 另一个小于等于pi先不考虑a, b的大小 对于每个素因子pi1. 在a中的指数 ai == ei 那么原创 2015-08-07 09:27:32 · 2636 阅读 · 4 评论 -
UVa 1595 Symmetry(暴力)
题意 给你不超过1000个点的坐标 判断这些点是否是关于一条竖线对称的没想到暴力枚举可以过 如果存在对称轴的话那么对称轴的横坐标一定是最左边的点和最右边的点的中点 为了避免中点是小数 可以将横坐标都乘上2 然后在判断所有点是否有对称点就行了#include using namespace std;const int N = 1005;int x[N], y[N], n原创 2015-01-22 10:04:16 · 4274 阅读 · 1 评论 -
POJ 1365 Prime Land
Prime LandTime Limit: 1000MSMemory Limit: 10000KTotal Submissions: 2972Accepted: 1362DescriptionEverybody in the Prime Land is using a prime base number syste原创 2014-09-02 09:50:27 · 792 阅读 · 0 评论 -
POJ 3258 River Hopscotch(二分·最小距离最大)
题意 一条河两岸之间有n个石头 求取走m个石头后 使得两个石头间距离的最小值最大感觉关键是理解题意 简单的二分 二分最小距离 看要取走多少个(cnt)石头 cnt#include #include using namespace std;const int N = 50005;int p[N], l, n, m;bool ok(int k){ int原创 2015-03-09 11:33:17 · 1041 阅读 · 0 评论 -
UVa 1583 Digit Generator(数学)
题意 如果a加上a所有数位上的数等于b时 a称为b的generator 求给定数的最小generator 给的数n是小于100,000的 考虑到所有数位和最大的数99,999的数位和也才45 因此我们只需要从n-45到n枚举就行了#include #include using namespace std; int t, n, a, b, ans, l;原创 2014-08-30 09:36:03 · 1866 阅读 · 0 评论 -
Codeforces 17A Noldbach problem(数学)
题意求n以内等于两个连续素数的和加上1的数的个数 n不大于1000#include #include #include using namespace std; const int N = 1000; int n, k, ans; bool isPrime (int a) { for (int i = 2; i <原创 2014-08-30 12:10:53 · 921 阅读 · 0 评论 -
POJ 3370 Halloween treats(抽屉原理)
题意 有c个小孩 n个大人万圣节搞活动 当小孩进入第i个大人家里时 这个大人就会给小孩a[i]个糖果 求小孩去哪几个大人家可以保证得到的糖果总数是小孩数c的整数倍 多种方案满足输出任意一种用s[i]表示前i个打人给糖果数的总和 令s[0]=0 那么s[i]共有n+1种不同值 而s[i]%c最多有c种不同值 题目说了c这就是抽屉原理了 n个抽屉放大于n个苹果原创 2014-09-02 09:52:10 · 727 阅读 · 0 评论 -
POJ 1840 Eqs(hash)
题意 输入a1,a2,a3,a4,a5 求有多少种不同的x1,x2,x3,x4,x5序列使得等式成立 a,x取值在-50到50之间直接暴力的话肯定会超时的 100的五次方 10e了都 然后可以考虑将等式变一下形 把a1*x1^3+a2*x2^3移到右边 也就是-(a1*x1^3+a2^x2^3)=a3*x3^3+a4*x4^3+a5*x5^3考虑到a1*x1^3原创 2014-09-02 09:52:12 · 649 阅读 · 0 评论 -
POJ 3292 Semi-prime H-numbers(数)
题意 所有可以表示为4*k+1(k>=0)的数都称为“H数” 而在所有“H数”中只能被1和自身整除的H数称为“H素数“ 能表示成两个”H素数“积的数又称为”Semi-prime H数“输入n 求1到n之间有多少个”Semi-prime H数“;方法 先打个H素数表 再用H素数表中的数依次相乘 得到的数都标记 再用一个数组保存每个数以内的标记数 输入n后直接读数组就行了原创 2014-09-02 09:50:50 · 652 阅读 · 0 评论 -
HDU 5050 Divided Land(进制转换)
题意 给你两个二进制数m,n 求他们的最大公约数 用二进制表示 0先把二进制转换为十进制 求出最大公约数 再把结果转换为二进制 数比较大要用到大数import java.util.*;import java.math.*;public class wl6_9 { static BigInteger two = BigInteger.valueOf(2), one原创 2014-09-28 10:53:57 · 1196 阅读 · 0 评论 -
HDU 1286 找新朋友(欧拉函数)
题意 中文 就是求小于等于n的数中有多少个和n互质 即欧拉函数值div[i] 表示i的最小质因数 eul[i]存储i的欧拉函数值 求欧拉函数的方法: 1.eul[1]=1; 2.若i==p^k (p是素数) eul[i]=(p-1)*p^(k-1); 3.若m,n互质, eul[m*n]=eul[m]*eul[n];可以推出欧拉函数的递推式原创 2014-11-10 15:56:40 · 946 阅读 · 0 评论 -
ZOJ 3622 Magic Number(数)
题意 如果一个正整数y满足 将任意正整数x放到y的左边得到的数z满足 z%y==0 那么这个数就是个Magic Number 给你一个范围 求这个范围内Magic Number的个数令 l表示y的位数 ly=10^l 那么z=x*ly + y 要z%y==0 容易看出 只需 x*ly%y==0 又因为x是任意的 所以一个Magic Number必须满足 ly%y原创 2014-11-18 15:42:36 · 1026 阅读 · 2 评论 -
HDU 2095 find your present(异或)
题意 求一组数中只出现过奇数次的数 输入保证只有一个数满足知道一个数与自己的异或等于0 与0的异或等于自己就行咯#includeusing namespace std;int main(){ int n, t, ans; while(scanf("%d", &n), n) { ans = 0; for(int i = 1;原创 2014-12-01 19:16:01 · 802 阅读 · 0 评论 -
UVa 1587 Box
大水题一发 弄清长方体的几个面的关系就行了#include#includeusing namespace std;const int N = 6;struct rec{ int l, w;} r[N];bool cmp(rec a, rec b){ return a.w < b.w || (a.w == b.w && a.l < b.l);}int main()原创 2015-01-17 21:55:17 · 3148 阅读 · 0 评论