ACM数学 数论。
文章平均质量分 56
apsara-jueying
阿里云菜鸟攻城狮
展开
-
uva 11401 Triangle Counting(一共可以组成多少三角形)
给一个整数n 要求求出三边小于n的三角形共有多少个 三边不等 思路就是 用cx表示最大的边为x的三角形的数量 那么另外的两条边 y z z的范围应该是(x-y,x); 那么y=1 时没有y y=2 时候有一个 这样算的话 是 0 1 x-2; 等差数列求和 (x-1)*(x-2)/2; 首先要扣除y==z的情况 再除以2#inclu原创 2013-01-23 18:09:31 · 375 阅读 · 0 评论 -
poj 2739 Sum of Consecutive Prime Numbers(筛选素数 预处理)
随意看到的题目 挺水的 因为n是10000 暴力算法都能过 没有更好的了估计。。 题意就是 给出一个数 他可能是一些连续的素数的和 找出有多少这样的组合 素数必须是连续的 打表找出素数 存在prime中 然后预处理 这个数组 下标i从0到k j从i到k sum一直加 然后得到的结果对应的ans++; 就完事儿了 #include #include using namesp原创 2013-01-28 16:44:55 · 396 阅读 · 0 评论 -
poj 1862 Stripies(数学题 贪心题)
这题 还是在 online status 随便看到的。。是一道挺好的数学题 题意就是给出n个数 每次可以有两个数a和b合并为一个数 2*(sqrt(a*b)); 我也不知道是题意的问题还是poj数据水了的问题。。。。我觉得还是数据水了。 因为我在网上看到也有人和我一样用优先队列做的了。。 因为开根号嘛 肯定先开大的啊。。 所以每次找两个最大的合并 再push回去 知道最后一个原创 2013-01-28 01:10:32 · 493 阅读 · 0 评论 -
poj2773 Happy 2006(用gcd函数进行的推导)
这个题目本来是想学一下容斥原理 网上发现有人用二分答案和容斥原理做的。。。后来又发现了更简单的解法 直接用gcd函数进行推导。。 题意就是给出m 和k m最大100w k最大 1亿 现在要求从1 开始 第k个 与m互素的数。 我们看gcd函数 gcd(a,b)=gcd(a%b,b)=gcd(a+b,b); 因为 a%b 和 (a+b)%b 是相等的。 这里能看出什么?原创 2013-01-25 23:52:27 · 378 阅读 · 0 评论 -
dut OJ 1277 素数测试
我尼玛就无语了!@!!!!10^10是 1后面10个零! 也就是100亿,int20多亿! 爆int 用long long 这种题 输入最大是n 先打表 到根号n 内的素数全找出来 然后呢 对于1-根号n范围内 直接根据那个筛选法的数组判断 对于大数 我们用素数表的素数去除就可以了。一旦整除 false #include #include #i原创 2013-01-23 22:58:51 · 387 阅读 · 0 评论 -
Dut oj1041 打表筛选素数 + log2函数使用
想着把很久以前做的题目再回顾一下啊 这个题目就是给两个整数 ab 先求出ab之间非素数的整数个数 包括ab 然后再求这个数的log+1 改进了两个地方 一个是log用cmath的库函数 log2 另一个是 这次素数打表了 bool型的 100w的一个数组正好是1mb #include #include #include #include using原创 2013-01-23 22:56:11 · 353 阅读 · 0 评论 -
uva 11300Spreading the Wealth(数学 中位数)
#include #include #include using namespace std; typedef long long LL; const int maxn=1000001; LL A[maxn],tot,C[maxn],x1,ans,M; int main() { int n,i; while(scanf("%d",&n)!=EOF) {原创 2013-01-23 22:53:27 · 347 阅读 · 0 评论 -
DUT oj 1016 一个数最多能分解成几个数的乘积 和素数打表法
顺便一提 dut 的oj地址 acm.dlut.edu.cn 给定一个数,它最多能分解成几个数的乘积(不包括1)? Input 多测试数据,每个测试数据一个数N(1 Output 输出对应的个数。 Sample Input 5 20 Sample Output 1 3 还记得省赛前纠结这个题目好久,最后原创 2013-01-23 22:59:53 · 538 阅读 · 0 评论 -
dut oj 1058 求能组成的数字
这个题目就是给你m个数字 然后求这m个数字一共可以组成多少种数字 组成就是相加 这个就是迭代了 输入第一个数字 输入集合 输入第二个数字 和原来集合的所有元素相加 放回原来集合 这样一直搞到第m个 #include #include #include using namespace std; int main() { int m; sca原创 2013-01-23 22:55:02 · 329 阅读 · 0 评论 -
hdu 2015 偶数求和
水水的一个水题 但是一开始还写那么复杂 数学功底的问题啊 就是 前n个偶数 每m个一组 求平局数 如果最后落单了几个 就再求那几个的平均数 2 4 6 8 10 12.。。。。。。。。。。。 就是这些数 那么每组第一个 只要2 2+m*2 。。一直加2*m就行了 然后每组的平均数 不就是 第一个数 假设是a a+m-1 啊! 等差数列求和公式 首相是a 公差是2 前m原创 2013-01-23 23:01:02 · 294 阅读 · 0 评论 -
uva11538 Chess Queen(组合数学)
非常有思想的数学题 意思就是给一个n*m的矩阵 放一黑一白两个皇后多少种方法 要相互攻击到的 这样要分三种情况 第一种两个皇后 在一排 那么总数是 n*m*(m-1)//n*m为放第一个, 在那一行剩余的 (m-1)个位置放另一个 第二种两个皇后在一列 总数是 n*m(n-1) 第三种略微复杂 是在对角线方向的。 开始想的是对于 每一个坐标 通过坐标去确定原创 2013-01-23 23:02:16 · 373 阅读 · 0 评论 -
dut oj 1039 求最小的 n个数不能组成的数字
记得这个题目也是在省赛前摧残了很久的。 给出n 然后给n个数 n个数可以组合形成 其他数字 比如有1 2就可以组成三 现在要问这n个数所不能组成的数字里最小的那个 正确解法就是排序 然后循环数组 从第一个开始 更新sum,sum是之前数字的和 如果sum+1>arr[i]; 那么最小的不能组成的数字就是sum+1 这个题目有点类似二进制的原创 2013-01-23 22:57:46 · 524 阅读 · 0 评论 -
DUT1035 求一元二次方程和x轴围城的面积。 市赛题
这题被坑了啊。。 积分。。数学题 就是把那个 分成十万分 然后当成矩形。 数学题啊数学题。 #include #include #include #include using namespace std; int main() { //freopen("/home/gl/acm/in","r",stdin); double a,b,c; while(scanf(原创 2013-04-24 12:52:58 · 731 阅读 · 0 评论