上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 17 下一页

2011年5月6日

The Circumference of the Circle ACM PKU http://acm.pku.cn/JudgeOnline/problem?id=2242

摘要: 公式推导过程如下:设任意一个三角形的三边为a, b, c, 边a所对的角为A. 所求外接圆半径为R根据任意三角形面积公式, 得到 bcsinA/2 = S再根据正弦定理, 得到 2R= a/sin A;两式一除, 得到 (bc/2) / (2R) = S/a整理, 就得到 R = abc/(4S)代码如下:#include<stdio.h>#include<math.h>#define pi 3.141592653589793int main(){ double a,b,c;double x1,x2,x3,y1,y2,y3;double sinA,cosA,r;whil 阅读全文

posted @ 2011-05-06 19:38 _Clarence 阅读(120) 评论(0) 推荐(0) 编辑

Parliament ACM PKU http://acm.pku.cn/JudgeOnline/problem?id=1032

摘要: 我们首先先撇开“每组的人数不同”这一约束条件,我们发现如10可以拆成5+5,它的乘积最大,而5又可拆成2+3;2*3>5;故我们发现每次的每一个数都拆成两个相等或相差1的两个数乘积最大。而最大的当然是一直拆到出现2;我们在回来考虑“每组的人数不同”这一约束条件;每组的人数不能相等,但我们又要使数拆成最小的部分(最好拆到出现2),比如说2.3.4~~,那我们大可从2加起,2+3+4+~~~一直加到接近所要求的数;如26我们可以用个循环得到2+3+4+5+6,然后让它停下,此时还剩余6(26-2-3-4-5-6)没用完;那我们就从加数序列的最大那个数开始倒序一次加一,这样过后加数序列就变成了 阅读全文

posted @ 2011-05-06 19:37 _Clarence 阅读(120) 评论(0) 推荐(0) 编辑

Biorhythms ACM PKU http://acm.pku.cn/JudgeOnline/problem?id=1006

摘要: 本题可以参考Wikipedia上线性同余同方程的解法,方法很简单手算一会就出来了。也可以参考中国同余定理;就这么多,下面我展示我的代码:#include <iostream>using namespace std;int main (){int p,e,i,d;for (int n=1;;n++){ cin >>p>>e>>i>>d; int sum,sum1,sum2,sum3; if (p==-1&&e==-1&&i==-1&&d==-1) break; sum1=p; sum2=e 阅读全文

posted @ 2011-05-06 19:36 _Clarence 阅读(108) 评论(0) 推荐(0) 编辑

寻找和最大的最长子串

摘要: 问题:给你一个整型数组,其中的元素有正有负也有0,要求你找到一个连续的子串,子串的所有元素之和是所有的连续子串中最大的,而且是非负的。(应该讲清楚了吧?^_^)解决方法:最简单而又最高效的方法应该就是《编程珠玑》上介绍的扫描法了吧。其基本思想是假设以【0~(i-1)】为下标区间的子串中的最大子向量的元素之和,以及以下标 i-1 为截止元素的最大子向量之和已经求出,则当扫描到下标为 i 的元素时,这两个最大和应该做如何改变?具体操作可以这样:通过一个变量保存遍历到当前位置为止所找到的最大连续子串的元素之和,假设为max通过另一个变量temp用来保存以当前位置上的元素作为最后一个元素的连续子串的元 阅读全文

posted @ 2011-05-06 19:36 _Clarence 阅读(380) 评论(0) 推荐(0) 编辑

Blocks ACM PKU http://acm.pku.cn/JudgeOnline/problem?id=2363

摘要: 本以为这道题有多难,开始别人说它恶心我还不信,现在我把它拿下了;原来是把它想得太复杂了,既然是水题我也没有什么好说的了,只要注意一下当输入0时应该输出6就行了,下面展示这个恶心题的我的水代码:#include <iostream>using namespace std;int main (){int n;cin>>n;for (int q=0;q<n;q++){ int m=0,sum=999999; cin >>m; if (m==0) { sum=m; continue; }for (int i=1;i<n;i++){ for (int j= 阅读全文

posted @ 2011-05-06 19:34 _Clarence 阅读(161) 评论(0) 推荐(0) 编辑

pku acm 1046 Color Me Less http://acm.pku.edu.cn/JudgeOnline/problem?id=1046

摘要: #include <iostream>#include <cmath>using namespace std;int main (){double aa[16][3];for (int i=0;i<16;i++){ cin>>aa[i][0]>>aa[i][1]>>aa[i][2];} double a,b,c;while ((cin >>a>>b>>c)&&(a!=-1&&b!=-1&&c!=-1)){ int sub=0; double Dm 阅读全文

posted @ 2011-05-06 19:33 _Clarence 阅读(136) 评论(0) 推荐(0) 编辑

ACM PKU Temple of Dune 2335 http://acm.pku.cn/JudgeOnline/problem?id=2335

摘要: #include <iostream>#include <cmath>using namespace std;const double pi=3.1415926535897932384626;double angle (double x0,double y0,double x1,double y1,double x2,double y2){double t1,X1,X2,Y1,Y2,temp;X1=x2-x0;Y1=y2-y0;X2=x1-x0;Y2=y1-y0;temp=(X1*X2+Y1*Y2)/(sqrt(X1*X1+Y1*Y1)*sqrt(X2*X2+Y2*Y2 阅读全文

posted @ 2011-05-06 19:32 _Clarence 阅读(150) 评论(0) 推荐(0) 编辑

ACM PKU 取石子游戏 http://acm.pku.edu.cn/JudgeOnline/problem?id=1067

摘要: P=黄金分割率[自然数列/P]就可以了.划分的概念很简单,假如A,B为无理数,而且1/A+1/B=1;那么[A*自然数列]和[B*自然数列]是两个数列,这两个数列合成了自然数列而且没有重复.#include <iostream>#include <cmath>using namespace std;int main (){ int n,m; int num,temp ; while ( scanf ( "%d%d", &n, &m ) != EOF ) { if ( n > m ) { temp = n; n = m; m = 阅读全文

posted @ 2011-05-06 19:31 _Clarence 阅读(110) 评论(0) 推荐(0) 编辑

Bash Game

摘要: (一)巴什博弈(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。很容易想到当n%(m+1)=0时,先取必胜,第一次先拿走n%(m+1),以后每个回合到保持两人拿走的物品总和为m+1即可。这个游戏还可以有一种变相的玩法:两个人轮流报数,每次至少报一个,最多报十个,谁能报到100者胜。 阅读全文

posted @ 2011-05-06 19:29 _Clarence 阅读(157) 评论(0) 推荐(0) 编辑

Wythoff Game

摘要: 威佐夫博弈(Wythoff Game):有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。如果甲面对(0,0),那么甲已经输了,这种局势我们称为奇异局势。前几个奇异局势是:(0,0)、(1,2)、(3,5)、(4,7)、(6,10).可以看出,a0=b0=0,ak是未在前面出现过的最小自然数,而 bk=ak+k. 那么任给一个局势(a,b),怎样判断它是不是奇异局势呢?我们有如下公式: ak =[k(1+√5)/2],bk= ak + k (k=0,1,2,...,n 方括号表示取整函数)奇妙的是其中出现了黄金分割数(1+√5)/ 阅读全文

posted @ 2011-05-06 19:27 _Clarence 阅读(103) 评论(0) 推荐(0) 编辑

上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 17 下一页

导航