2011年5月6日

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

摘要: 解法 一:#include <iostream>#include <stdio.h> #include <string.h> using namespace std;char hMonthName[19][8]={"pop","no","zip","zotz","tzec","xul","yoxkin","mol","chen","yax","zac& 阅读全文

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

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

摘要: #include<iostream>#include<string>using namespace std;int main(){char abc[20];int n , max[100] , min[100] , i = 0 , j = 0 , k, cnt = 0 ,number = 0;while(cin>>n){ number++; if(number == 1 && n == 0) return 0; getchar(); gets(abc); if( !strcmp("too high",abc) ) max[ 阅读全文

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

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

摘要: #include <stdio.h>#include <stdlib.h>int stick[64];int used[64];int n, m, len;void init ( int n ){ for ( int i=1; i<n; i++ ) { used[i] = 0; } used[0] = 1;}int cmp ( const void *a, const void *b ){ return *( int * )b - *( int * )a;}int dfs ( int start, int no, int cur, int last ){ int 阅读全文

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

ACM2304 http://acm.pku.cn/JudgeOnline/problem?id=2304

摘要: #include<iostream>using namespace std;int main(){int a , b , c , d , sum;while(cin>>a>>b>>c>>d ){ sum = 0; if(!a && !b && !c && !d) return 0; sum += 1080; if( a > b) sum += (a - b) * 9; else sum += 360 - (b - a) * 9 ; if(b < c ) sum += (c - 阅读全文

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

素数测试+大数的因素分解 的概率算法

摘要: 素数在密码届被广泛使用。如何判断一个素是素数,迄今为止最有效的方法是筛数法,做个表(打表法)即素数的倍数一定是合数。筛选法的效率很高,但是遇到大素数就无能为力了。米勒罗宾算法是一个相当著名的判断是否是素数的算法,能够很大概率的判断一个数是否是素数(接近100%,在一定范围内能达到100%)。在工程方面被广泛应用。米勒罗宾算法的核心是课上提到的费马小定理:即如果一个数n 它的 a^(n-1)%n !=1 (0<a<n) 则它一定是合数。如果 a^(n-1)%n ==1 (0<a<n) 则它可能是合数可能是素数。概率算法的概率就在这个 a上体现。/*1 随机取一个 a2 如 阅读全文

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

ACM 2260 http://acm.pku.cn/JudgeOnline/problem?id=2260

摘要: #include <iostream>using namespace std;int main (){ int n;bool a[100][100];for(int i=0;i<100;i++){ cin >>n; if (n==0) break; int o=0,q=0,p=0,x=0,y=0; for (int j=0;j<n;j++) for (int k=0;k<n;k++) { cin >>a[j][k]; } for (int l=0;l<n;l++) { int sum1=0; for (int m=0;m<n;m 阅读全文

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

ACM 1050 To the Max http://acm.pku.cn/JudgeOnline/problem?id=1050

摘要: 这里我重新整理了一下最大子矩阵的算法;基本思路是将二维数组转化为一维数组,多次调用最大子段和函数,通过比较获得最大值;我画一个图吧;每次将二维数组的每列和转为一维数组;调用一维数组最大最大子段和问题;用temp存储最大值就欧了!!!总之一句话:会最大字段和这个问题就很容易看懂!我也不多写了,代码贴一下:#include <iostream>using namespace std;int array[105][105],n,s[105];int maxSum(int n,int *a){int sum=a[0],b=0;for(int i=0;i!=n;++i){ if (b> 阅读全文

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

ACM1503 http://acm.pku.cn/JudgeOnline/problem?id=1503

摘要: #include <iostream>using namespace std;int main (){char a[200][200]={'0'};int b[200]={0};int c[200]={0};int mm=0;int j=0;int i=0;for (;;i++){cin>>a[i];b[i]=strlen(a[i])-1;if (b[i]>mm) mm=b[i]; if (a[i][0]=='0'&&b[i]==0)break;}int carry =0;for (int p=mm;p>=0; 阅读全文

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

C++/MFC 试题 (2)

摘要: 三.简答题(64分)1.请简述C、C++、VC、MFC在概念上的区别(4分)2.请写一个函数重载的简单例子(4分)3.用什么函数开启新进程、线程。(4分)4.SendMessage和PostMessage有什么区别(4分)5.WaitForSingleObject有何作用;m_pThrd的类型是CWinThread*时,WaitForSingleObject(m_pThrd->m_hThread, INFINITE);有何作用。(4分)6. __stdcall、__cdecl、__pascal在什么方面有所不同。(4分)7.请把下述代码加上异常处理。(6分)int MyWriteFile 阅读全文

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

C++/MFC 试题 (1)

摘要: 一.填空题(26分)1.WIN32平台下,sizeof(short) = __2__,sizeof(int) = __4__,sizeof(long) = __4__。(3分)2.请给出如下程序的结果(2分)int a = 3;int b = a << 3;a = __3__,b = __24__。3.请给出如下程序的结果(2分)int aaa = 0x01;htonl(aaa) = _16777216___。//这题运行显示的是16777216,我觉得可能是随机值4.请给出如下程序的结果(2分)#define MAX_NUM 100+200int nTemp = MAX_NUM* 阅读全文

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

ACM 1740 A New Stone Game http://acm.pku.cn/JudgeOnline/problem?id=1740

摘要: 题目大意:有N堆石头,每堆石头数目在1到100之间,最多有10堆.两人分别取走石头.取石头的规则是:每次只能从1堆中取,每次取走至少1个.取过后还可以把这堆的石头任意分配到其它堆上(这些堆必须有石头,废话呵呵),当然也可以不分配.问给定这些石头堆的情况,两人轮流取,谁先取完谁胜利,问是先取的胜利还是后取的胜利.双方最优策略.我就直接说结论了:首先讨论石头堆两堆两堆相等的情况,例如x,x,y,y,z,z.6堆的情况.在这种情况下先取的必输,很简单,先取的那人怎么取后取的那人就怎么取(如果对方把石头分配到一堆上,你就分配到与之对应的堆上),总之保持这个相等的均势不变,这样到最后,后取的人就将取走最 阅读全文

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

ACM.2234 Matches Game http://acm.pku.cn/JudgeOnline/problem?id=2234

摘要: #include <iostream>using namespace std;int main (){ int n=0; while (cin>>n) { int m=0,l=0; for (int i=0;i<n;i++) { cin >>l; m^=l; } cout <<(m?"Yes":"No")<<endl; } return 0;} 阅读全文

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

无穷下降法·数的按位异或与随机博弈(1)

摘要: 无穷下降法是著名的业余数学家费马提出的,也正是因为这个方法他才敢在书页边上声称自己已经找到了一个巧妙的方法证明费马猜想(x^n+y^n=z^n在n>2时没有正整数解,x^y表示x的y次方)。意外的是这个方法并没有想象中的那样神奇,它仅仅可以证明对于某些特殊的n才能成立(譬如说4),思路是:假设存在一组解(x0,y0,z0),那么由这一组解可以得到一组新的解(x1,y1,z1),并且满足z0>z1,这个过程可以重复进行,然而这是不可能的,这样必然使得zi“下降”到0,所以原方程没有正整数解。这个方法应该和数学归纳法齐名的,然而它太类似反证法了:上述证明可以写成假设一组解(x0,y0, 阅读全文

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

ACM 2348 Euclid's Game http://acm.pku.cn/JudgeOnline/problem?id=2348

摘要: 方法:若整除先者胜,若不然,GCD,看每次的商是否为1,若为1,i++,继续,判断他的奇偶性;证明,若整除,显然,不然,若遇到m/n>1时,其中1、2的时候包含所有胜负,则做该判断的时候的人必胜我最后更新的代码如下:#include <iostream>using namespace std;int main (){int n=0,m=0;while (cin>>m>>n){ if(m==0&&n==0) break; int i=0; int temp=0; if (m<n) { temp=m; m=n; n=temp; } i 阅读全文

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

ACM 2083 Game of Connections http://acm.pku.cn/JudgeOnline/problem?id=2084

摘要: 很郁闷的一道题,看通过率本以为很简单,其实就是个数学题,求Catalan数,关于Catalan数,现在做下说明:令h(1)=1,catalan数满足递归式:h(n)= h(1)*h(n-1) + h(2)*h(n-2) + ... + h(n-1)h(1) (其中n>=2)该递推关系的解为:h(n+1)=c(2n-2,n-1)/n (n=1,2,3,...)我并不关心其解是怎么求出来的,我只想知道怎么用catalan数分析问题。我总结了一下,最典型的三类应用:(实质上却都一样,无非是递归等式的应用,就看你能不能分解问题写出递归式了)1.括号化问题。矩阵链乘: P=a1×a2&# 阅读全文

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

Bode Plot pku ACM http://acm.pku.cn/JudgeOnline/problem?id=1045

摘要: 今天做了一件很缺德的事,用别人给出的公式做了这个1045,一道纯数学公式推导居然还看了DISCUSS,真的不能原谅自己:公式推导:V2=iR=CR d/dt(Vs*cos(wt)-Vr*cos(wt+b))=Vrcos(wt+b) CRw(sin(wt+b)-sin(wt))=Vr*cos(wt+b) 令t=0化简得: tan(b)=1/(CRw)-------------(1) 令wt+b=0化简得:Vr=CRwVs*sin(b)------------(2) 由(1),(2)得: Vr=CRwVs/sqrt(1+(CRw)^2))#include <iostream>#incl 阅读全文

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

Deck ACM pku http://acm.pku.cn/JudgeOnline/problem?id=1607

摘要: 哈哈,这道题我玩得最阴毒,你出题毒我会更毒,让你知道什么叫道高一尺,魔高一丈!不就是要我控制格式嘛,我连你的空格我都给复制下来,看你还敢不敢说我Presentation Error!其题目大意就是要我们计算超出边缘的总长度,没有难度,主要注意小数点位数和它要求的格式就欧了!#include <iostream>#include <iomanip>using namespace std;int main (){int n;cout<<"Cards Overhang"<<endl;while (scanf("%d&quo 阅读全文

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

Yeehaa! ACM pku http://acm.pku.cn/JudgeOnline/problem?id=1799

摘要: 面队1799这样的题只有一个字可以描述它:水!我的代码如下:#include <iostream>#include <cmath>using namespace std;const double p=3.1415926535897932384626;int main (){ int m;cin >>m;for (int i=1;i<=m;i++){ double R=0; int n=0; cout <<"Scenario #"<<i<<":"<<endl; cin 阅读全文

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

Intersecting Lines ACM PKU http://acm.pku.cn/JudgeOnline/problem?id=1269

摘要: 自己的问题自己解决了,凡事还得靠自己啊!#include <iostream>using namespace std;int main (){int n;cin >>n;double x1,x2,x3,x4,y1,y2,y3,y4;double a[10][8];for (int i=0;i<n;i++) for (int k=0;k<8;k++){ cin>>a[i][k];}cout<<"INTERSECTING LINES OUTPUT"<<endl;for (int m=0;m<n;m++ 阅读全文

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

Hansel and Grethel ACM pku http://acm.pku.cn/JudgeOnline/problem?id=1254

摘要: 1254是一道非常简单的关于平面直线相交问题的计算,只要注意一点:斜率并不是所给出的指南针上的度数而应该是(90-degree);解决了此问题后所有的问题都迎刃而解了我的代码如下:#include <iostream>#include <cmath>using namespace std;const double PI=3.1415926535897932384626;int main (){int n;cin >>n;for (int i=1;i<=n;i++){ double x0,x1,y0,y1,degree0,degree1,X=0,Y=0; 阅读全文

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

导航