摘要: 题目大意:M+N个人排队买票,票的单价是50¥,每个人只能买一张。 M个人拿50的去买,N个人拿100的去买,然后悲剧的是售票处开始的时候没有钱,所以如果拿100块买票人前面的拿50块买票的人小于或者等于用100块买票的人,这种排队方式就不合法,也就是不能顺利全部都买到票(因为没零钱找了)!题解:这是一个Catalan数的非常经典的应用,买票问题,首先我们用"0"表示用50块买票的人,用“1”表示用100块买票的人,然而假设m=4,n=3,的一个序列是:0110100显然,它不合法,然后我们把他稍微变化一下:把第一个不合法的“1”后面的所有数0位为1, 1位为0;这样我们得 阅读全文
posted @ 2014-01-21 08:15 forever97 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 霸王美少女正在努力为您加载,请稍作等待…全屏游戏 阅读全文
posted @ 2014-01-20 15:09 forever97 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 转自martrix67's blog,一个玩了好久的游戏,很费脑,但是很值得,可以学到很多的东西……它是真正意义上的程序设计游戏,游戏不但提供了完备的读写和流程控制功能,甚至还引入了随机测试数据。游戏很快就会引入算法的思想,因为玩家渐渐会发现,这些谜题并不是单靠模拟就能解决的;后面的谜题则越发困难,需要相当有技巧性的算法设计,对脑力绝对是一个大挑战。一开始需要按右方向键几下浏览说明然后开始游戏,游戏难度逐步加大,完成这个游戏之后,你会发现自己对于自动机有了新的理解。Level 1: Robotoast! ACCEPT: Move robots from the entrance (to 阅读全文
posted @ 2014-01-19 16:13 forever97 阅读(813) 评论(0) 推荐(0) 编辑
摘要: 裸的卡特兰数C++#include#includeusing namespace std;#define base 10000#define len 100void multiply(int a[],int max,int b){ int i,array=0; for(i=max-1;i>=0;i--) { array+=b*a[i]; a[i]=array%base; array/=base; }}void divide(int a[],int max,int b){ int i,div=0; for(i=... 阅读全文
posted @ 2014-01-18 17:45 forever97 阅读(264) 评论(0) 推荐(0) 编辑
摘要: #include int num[10000][260]={0};int main(){ int i,j,n; num[1][0]=1; num[2][0]=1; num[3][0]=1; num[4][0]=1; for(i=5;i100000000) { num[i][j+1]+=num[i][j]/100000000; num[i][j]%=100000000; } } while(scanf("%d",&n)!=EOF) { for(i=... 阅读全文
posted @ 2014-01-18 15:51 forever97 阅读(119) 评论(0) 推荐(0) 编辑
摘要: JAVA水过(注:转载)import java.math.BigDecimal; import java.math.BigInteger; import java.util.Scanner; public class Main { public static void main(String[] args) { new Main(); } public Main(){ BigDecimal r; int n; Scanner sc=new Scanner(System.in); ... 阅读全文
posted @ 2014-01-18 15:20 forever97 阅读(134) 评论(0) 推荐(0) 编辑
摘要: /*高精度*/#include #include using namespace std;const int modnum=10;int main(){ int n; scanf("%d",&n); int m=n; while(n--) { printf("Case %d:\n",m-n); int a[1010]={0},b[1010]={0},c[1010]={0}; char ch1[1010],ch2[1010]; scanf("%s",&ch1); scanf("%s",&ch2 阅读全文
posted @ 2014-01-18 10:13 forever97 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 题目大意:求一个数的阶乘的位数。单词积累:factorial 阶乘题解:我们知道log10(n!)+1就是n的阶乘的位数,转化一下,log10(n!)+1=log10(1)+log10(2)+log10(3)+……+1;#include #include int main(){ int n; ... 阅读全文
posted @ 2014-01-18 09:40 forever97 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 题目大意:有n个房间,n!个钥匙,在房间中,最多可以破k扇门,然后得到其中的钥匙,去开其它的门,但是第一扇门不可以破开,求可以打开所有门的概率。题解:首先,建立这样的一个模型,题目相当于给出一个图,求形成1--K个环的可能性有多大。但是节点1不可以形成子环。那么首先,n个点形成1--k个环就是第一类斯特灵数的定义,但是该如何处理1的问题呢,既然算起来比较麻烦,那么正难则反,减去节点1成为自环的情况就可以了。第一类斯特林公式:S(m,n)=(m-1)*S(m-1,n)+S(m-1,n-1)。#include #include using namespace std;long long ans[2 阅读全文
posted @ 2014-01-18 09:10 forever97 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 题目大意:将给出的一个大数各位数字相加,得到一个新的数,再将这个数字各位数字相加,依次计算,直到变成一个个位数,这个数就被称为这个大数的Digital Roots。现在要求得到这个数。单词积累:digit 位,数字题解:其实这道题目根本就不需要高精度计算,一开始,直接将各位数字相加,和就在int的范围内了,然后就可以直接算了。#include #include int main(){ char s[1000]; int n; while(scanf("%s",s),s[0]!='0') { n=0; for(int i=0; i9... 阅读全文
posted @ 2014-01-17 16:28 forever97 阅读(129) 评论(0) 推荐(1) 编辑
摘要: 题解:http://www.cnblogs.com/forever97/p/3522238.html#include int main(){ int n; while(scanf("%d",&n)!=EOF) printf("%d\n",(n*n*n+5*n)/6+1); return 0;} 阅读全文
posted @ 2014-01-16 20:14 forever97 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 最近做了一些几何分割的问题,觉得需要总结一下。单点分割直线 这是最简单的,但是也是所有题目的基础,结论很显然,n个点可以把线段分为n+1个小段,画画图就知道。记其为f1(n)=n+1直线分割平面 然后是直线分割平面的问题,我们知道,当新增一条直线时,当其与之前所有直线相交时,一定可以新增最多... 阅读全文
posted @ 2014-01-16 11:42 forever97 阅读(1575) 评论(1) 推荐(2) 编辑
摘要: 题解:经过分析我们可以得到,当洞穴数与遍历间隔数互质时,一定不会有安全洞穴,所以,这就是简单的GCD的运用:#include int gcd(int a,int b){if(b==0)return a;return gcd(b,a%b);}int main(){ int t; scanf... 阅读全文
posted @ 2014-01-15 16:33 forever97 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 题解参考博客:http://blog.csdn.net/hjd_love_zzt/article/details/9897281#include int n,ns,n2,a[65],yes; int main(){ int cas; scanf("%d",&cas); while(cas--){ scanf("%d",&n); for(int i=1;i=1;i--){ if(a[i]==cant){yes=0;break;} else if(a[i]==des)t=sor... 阅读全文
posted @ 2014-01-15 16:09 forever97 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 打表水过:#include using namespace std; int n; long long a[20] = {0,2,7,5,30,169,441,1872,7632,1740,93313,459901,1358657,2504881,0}; int main() { while(cin>>n && n!=0){ cout<<a[n]<<endl; } return 0; } 阅读全文
posted @ 2014-01-15 15:29 forever97 阅读(97) 评论(0) 推荐(0) 编辑
摘要: 标题样式1标题样式1标题样式2标题样式2 阅读全文
posted @ 2014-01-10 10:02 forever97 阅读(4712) 评论(0) 推荐(1) 编辑
摘要: 题解:首先,对于小于10000的斐波那契数,我们直接计算,当大于10000时,用公式,由于只要输出前四位,所以不用考虑浮点数的问题,算出其取log的结果:tmp=(log(sq5/5)+n*log(0.5+sq5/2))/log(10.0)然而为什么要取log呢,考虑这样的情况,若结果前四位为149... 阅读全文
posted @ 2014-01-01 14:06 forever97 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 透过希望的窗棂,在阴霾的罅隙里也可以寻找阳光,看到未来的春暖花开。 ——forever97 阅读全文
posted @ 2013-12-29 18:46 forever97 阅读(172) 评论(3) 推荐(0) 编辑
摘要: 题解:求抛物线系数公式,直线系数公式,再用简单积分来求面积。#include double x1,x2,x3,y1,y2,y3; double a,s,k; double fuck(double x) { return 1.0/3*a*(x-x1)*(x-x1)*(x-x1)+y1*x-1.0/2*k*(x-x3)*(x-x3)-y3*x; } int main() { int t; scanf("%d",&t); while(t--) { scanf("%lf%lf%lf%lf%lf%lf",&x1,&y1,... 阅读全文
posted @ 2013-12-29 14:47 forever97 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 题解:考虑整数的分解情况:A = a + b * 10^k + c * 10^(k+1)B = a + c * 10^kN = A + B = 2 * a + b * 10^k + c * 10^k * 11那么,只要求出a,b,c,我们就可以得到答案了,所以枚举k,就可以检验得到答案了。#include #include using namespace std;int cmp(int a,int b){ return a=0) { a=(n-b*k-c*11*k)/2; if(2*a+b*k+c*11*k... 阅读全文
posted @ 2013-12-29 11:38 forever97 阅读(194) 评论(0) 推荐(0) 编辑