UVA 10089 Repackaging 数学问题】的更多相关文章

大致题意:给出几个包裹,每个包裹都包装好了3种大小的杯子.现在要重新包装,使向量 a[1]*(s[1][1],s[1][2],s[1][3])+a[2]*(s[2][1],s[2][2],s[2][3])+.....+a[n]*(s[n][1],s[n][2],s[n][3])=(k,k,k). 就这样转化成了向量问题其中a[i]为非负整数,k为正整数. 虽然转化成了向量问题,但是三维向量和这么多变量有点棘手,所以我们可以先降维,将原等式变化成: a[1]*(s[1][2]-s[1][1],s[…
感觉数学期望的和化学里面求元素的相对原子质量的算法是一样的 就是同位素的含量乘上质量然后求和得出 这道题因为等待时机是0到2*l/v均匀分配的,所以平均时间就是l/v 再加上过河的l/v, 最后加上步行的时间就ok了 #include<cstdio> #define REP(i, a, b) for(int i = (a); i < (b); i++) using namespace std; int main() { int n, D, kase = 0; while(~scanf(&…
UVa 10323 题目:计算阶乘在10000~6227020800之间的值,不在范围对应输出Under或者Over. 分析:简单题.数论.因为13!=6227020800,7!<10000<8!所以计算很简单. 注意:负数情况,奇数输出Overflow,偶数输出Underflow. 其实我不明白为什么小于零时要分奇偶!而且阶乘会小于零么? #include<iostream> using namespace std; int main() { int n; while(cin&g…
题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=83008#problem/E Description HINT 题意: 给你一个水池,水池中放一个东西,上面一双眼睛,问眼睛能看到东西时,水面的最小高度 题解: 列列方程就是了 #include <cstdio> #include <cmath> #include <cstring> #include <ctime> #include &l…
Bryce1010模板 10.1数论初步 1.欧几里得算法和唯一分解定理 2.Eratosthenes筛法 补充素数筛选 const int MAXN=1e6+10; ll prime[MAXN]; void getPrime(int maxn) { memset(prime,0,sizeof(prime)); for(int i=2;i<=maxn;i++) { if(!prime[i])prime[++prime[0]]=i; for(int j=i;j<=prime[0]&&am…
 The ? 1 ? 2 ? ... ? n = k problem  The problem Given the following formula, one can set operators '+' or '-' instead of each '?', in order to obtain a given k ? 1 ? 2 ? ... ? n = k For example: to obtain k = 12 , the expression to be used will be: -…
Consider rectangular coordinate system and point L(X, Y ) which is randomly chosen among all pointsin the area A which is defined in the following manner: A = {(x, y)|x ∈ [−a; a];y ∈ [−b; b]}. What isthe probability P that the area of a rectangle that…
                                    Polygon  John has been given a segment of lenght N, however he needs a polygon. In order to create a polygonhe has cut given segment K times at random positions (uniformly distributed cuts). Now he has K + 1much sh…
设当前有k个,那么也就是说拿到其他图案的可能是(n-k)/n 那么要拿到一个就要拿n/(n-k)次 所以答案就是n(1/n + 1/(n-1) ......1/2 + 1 / 1) 看起来很简单,但是实现有很多细节 一开始我是写了一个分数加法的函数 然后发现中间过程会溢出 所以要做两个操作 (1)  分母为1和n不算,最后算整数部分再加上去 因为如果算的话就要乘进去,分母会溢出 (2)要直接算所有数的最小公倍数,然后分子一起加(看代码) 我一开始是单独一个个分数来加减,这样在算分子的时候中间结果…
设置最后打开的是盒子1, 另外一个盒子剩下i个 那么在这之前打开了n + n - i次盒子 那么这个时候的概率是C(2 * n - i, n) p ^ (n+1) (1-p)^ (n - i) 那么反过来最后打开的是盒子2, 那么概率是C(2 * n - i, n) p ^ (n-i) (1-p)^ (n +1) 那么当前的概率就是两个加起来,然后乘以权值,即i就可以了 所以枚举所有的i加起来就好了. 但这样会损失很多精度, 所以我们可以用对数 也就是说算的时候先取对数来算,后来再取回去 不要忘…