51nod
ThreeWater-
这个作者很懒,什么都没留下…
展开
-
1289 大鱼吃小鱼(1级)
用栈模拟..#include <cstdio>#include <cstring>#include <algorithm>#include <stack>using namespace std;int main(){ int n,a,b,ans=0; scanf("%d",&n); stack<int> q; for(int i=0;i<n;i++)原创 2016-11-19 13:40:36 · 281 阅读 · 0 评论 -
1185威佐夫游戏(基础)
卡精度,用java大数过 威佐夫博弈: 有2堆石子。A B两个人轮流拿,A先拿。每次可以从一堆中取任意个或从2堆中取相同数量的石子,但不可不取。拿到最后1颗石子的人获胜。假设A B都非常聪明,拿石子的过程中不会出现失误。给出2堆石子的数量,问最后谁能赢得比赛。 当两堆石子的个数差值为两数中最小值乘上1.618等于另一个数时,后手赢import java.util.*;import java.原创 2016-11-19 13:47:01 · 228 阅读 · 0 评论 -
1130N的阶乘的长度
#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <iostream>using namespace std;const double pi=acos(-1.0);const double e=2.718281828459;int main(){ int t;原创 2016-11-19 13:53:49 · 249 阅读 · 0 评论 -
权势二进制-51nod
1个十进制整数被叫做权势二进制,当他的十进制表示的时候只由0或1组成。例如0,1,101,110011都是权势二进制而2,12,900不是。 当给定一个n的时候,计算一下最少要多少个权势二进制相加才能得到n。 只用找出这个n的数位最大的那一位,即为答案。 因为权势二进制可以再每一位都凑出1,所以只要找出数位最大值,即为需要多少个数。#include <cstdio>#include <alg原创 2016-11-21 20:48:40 · 802 阅读 · 1 评论 -
1的数量(51nod)
求1-n中出现1的数量。 《编程之美》该书中提到过这题的解法 假设n=abcde, 如果百位上的数字为0,那么,百位上出现1的次数由更高位决定,例如:12013,百位上出现1的情况为,1-199,1100-1199,2100-2199,…,11100~11199,一共有12*100个 如果百位上的数字为1,那么,百位上出现1的次数由高位和低位的数影响,例如:12113,高位1-199,110原创 2016-12-06 22:59:58 · 214 阅读 · 0 评论 -
合法整数集-(2)51nod
水题,因为|运算后的值一定大于等于原来运算的两个数,所以只用考虑有小于等于给定的数的二进制位数上最小的值即可。#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int read(){int ret=0;char ch=getchar();while(ch<'0'||ch>'9') ch=ge原创 2016-11-25 14:49:06 · 309 阅读 · 0 评论 -
天堂里的游戏-(2)51Nod
刚开始题目没有读懂. 然而下面的node中说 论Noder采用什么方案,都是不能改变局面的。 似乎题意就是要求出当美女选择正反的概率为多少时,Noder是不能改变局面的,那么就是出正面和反面期望相等时。 那么假设美女出正面的概率为p,反面的概率为(1-p) 那么你出正面的期望收益为 p*A-(1-p)*(A+B)/2. 那么你出反面的期望收益为 (1-p)A-p(A+B)/2. 当二原创 2016-11-25 14:07:49 · 181 阅读 · 0 评论 -
活动安排问题-2 (51nod)
#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int read(){int ret=0;char ch=getchar();while(ch<'0'||ch>'9') ch=getchar();for(;ch>='0'&&ch<='9';ch=getchar()) ret=ret*10+原创 2016-11-25 13:44:45 · 342 阅读 · 0 评论 -
相离的圆-(2)51Nod
这里的相离竟然不包括内含….坑…. num=n,sum=0; num是代表现在还有多少个圆没有出现过。 sum代表外离的对数。 那么每次 直接遇圆左就num–; 圆右就sum+=num; 处理完,即为答案#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int read(){i原创 2016-11-25 17:44:08 · 279 阅读 · 0 评论