
Volume 6.0 Mathematics
深蓝色的猫
一个努力成长为大牛的蒟蒻程序媛
展开
-
UVa OJ 138
1、网上有人说解佩尔方程什么的,不用那么麻烦。刚开始我用暴力枚举,时间复杂度O(n^2),超时了,其实判断等式是否成立,只要判断开方后是否为整数即可。 2、打表输出更快。具体见代码。 #include #include using namespace std; int main() { /*freopen("a.txt","w",stdout); int cou原创 2013-08-24 20:49:53 · 357 阅读 · 0 评论 -
UVa OJ 10491
1、就是条件概率的计算。。。一次AC~生活真美好啊~ #include using namespace std; int main(){ int ncow,ncar,nshow,ntot,all; double p; while(scanf("%d%d%d",&ncow,&ncar,&nshow)==3){ ntot=ncow+ncar;al原创 2013-10-10 14:16:33 · 373 阅读 · 0 评论 -
UVa OJ 10943
1、很容易想到是递推。。。注意k要放在最外层。 2、刚开始忘记取余了,WA了一次。 #include #include using namespace std; int f[110][110]; int main(){ int n,k; memset(f,0,sizeof(f)); for(int i=0;i f[i][1]=1; for原创 2013-11-08 23:56:16 · 334 阅读 · 0 评论 -
UVa OJ 11069
1、这道题我想到是递推了,但是刚开始我没有想清楚f的含义,输出了f【n】,自然出错。f【n】应该是“以n为结尾”的集合个数,只与n-2和n-3有关(n-4的话中间还能插入一个数),最后可能以n结尾,也可能以n-1结尾,但不可能以n-2结尾(想一想,为什么),所以输出f【n】+f【n-1】! #include using namespace std; int main(){ int原创 2013-11-08 21:19:11 · 896 阅读 · 0 评论 -
UVa OJ 701
1、终于把这道题给A啦~两个月前还不会的,当时很沮丧想怎么连这都不会,今天发现原来是区域赛题目,黑书上226页有讲解~ 2、我就不讲了吧,具体见黑书吧,要提一下的就是——总能找到答案,只要i足够大的话。我刚开始因为担心造成死循环所以i大于100的时候就跳出循环了,结果WA,后来去掉那句话之后就AC了。 #include #include using namespace std; i原创 2013-11-01 15:08:55 · 318 阅读 · 0 评论 -
UVa OJ 542
1、这道题考条件概率。。。刚开始temp=(2 #include #include #include using namespace std; int main(){ //freopen("a.txt","r",stdin); string s[16]; double a[16][16],d[16][5],p,sum; int temp;原创 2013-10-11 23:43:49 · 269 阅读 · 0 评论 -
UVa OJ 10759
1、刚开始没思路,后来到网上搜题解,发现是用递推的方法。。。嗯,长知识了。。。 2、0和1的时候特殊处理,其他情况用gcd即可。 #include #include using namespace std; long long d[25][150]; long long gcd(long long a,long long b){ return b==0?a:gcd(b,a%b原创 2013-10-10 22:31:50 · 357 阅读 · 0 评论 -
UVa OJ 10105
1、数学题。。。因为涉及求组合数,本以为会出点小状况的,没想到AC得这么容易~ #include using namespace std; long long fac[15]; long long C(int n,int k){ return fac[n]/(fac[n-k]*fac[k]); } int main(){ int n,k,temp; lon原创 2013-10-09 23:46:10 · 280 阅读 · 0 评论 -
UVa OJ 10023
1、终于把这道通过率仅7%的大数开平方写出来了!!!!!这是我做过的最难的一个题目(如果按通过率来算的话)。 2、方法就是模拟手工开平方,具体方案百度一下就出来了,我就不赘述了。我要说的是我的经验教训。刚开始我仗着自己有高精度*高精度模板就把所有变量都设成bign类,甚至连从0变到9的i也不例外!结果当然是大大地TLE了!其实这个程序可以优化的,因为我们根本用不到高精度*高精度。唯一一个“大数相原创 2013-09-09 19:19:52 · 350 阅读 · 0 评论 -
UVa OJ 10673
1、本题用扩展欧几里得即可。 #include #include using namespace std; void gcd(int a,int b,int &d,int &x,int &y){ if(!b){d=a;x=1;y=0;} else{gcd(b,a%b,d,y,x);y-=x*(a/b);} } int main() { int T,a原创 2013-08-26 00:00:21 · 379 阅读 · 0 评论 -
UVa OJ 11029
1、又见一道好题。。。求n的k次方的后三位和前三位,后三位可以用快速幂取模,前三位可以借助对数,因为取对数后再取零(去整),再作为10的指数求幂,就得到所需的数的科学技术法形式,乘以100就得到前三位了。例如123456=1.23456*10^5,取lg后得lg1.23456+5,用强制类型转换可以得到lg1.23456,再求幂得1.23456,乘以100,取整后得到123,即前三位。 2、注意原创 2013-08-28 23:01:42 · 347 阅读 · 0 评论 -
UVa OJ 571
1、发现我的数论真是弱到不行。。。刚开始看到这题的时候以为是隐式图搜索。。。但是没注意到一点就是两个水杯的容量是互质的,也就是说,na mod b能求出0~b-1的所有值(没有严格的证明),所以只要一直从A往B倒水就可以了。。。 #include int main(){ int ca,cb,n,a,b; while(scanf("%d%d%d",&ca,&cb,&n)==3原创 2013-08-28 21:13:13 · 289 阅读 · 0 评论 -
UVa OJ 10006
#include using namespace std; bool prime(int n){ for(int k=2;k*k if(n%k==0) return false; return true; } long long pow(long long x,long long n){ long long ret=1,mod=n;原创 2013-08-24 22:27:37 · 315 阅读 · 0 评论 -
UVa OJ 10717
1、暴力法+lcm。注意保存最优值。 #include using namespace std; const int INF=2147483647; int gcd(int a,int b){ return b==0?a:gcd(b,a%b); } int lcm(int a,int b){ return a/gcd(a,b)*b; } int main()原创 2013-08-26 22:40:15 · 335 阅读 · 0 评论 -
UVa OJ 10791
1、这题我完全想错了。注意最小公倍数不等于公倍数。我以为用基本不等式可得“离平方根最近的两个数就是答案”,这也是建立在这个错误的前提上的。 2、看了网上的题解,有一个我觉得比较详细的,摘抄如下: 首先假设我们知道了一系列数字a1,a2,a3……an,他们的LCM是n,那么什么时候他们是最优解呢,当他们两两互质的时候 为了方便我们以两个数来说明问题。 a和b的LCM是n,GCD是m,那么n=原创 2013-08-26 21:44:46 · 345 阅读 · 0 评论 -
UVa OJ 11121
1、感觉最近做题正确率有所提高。。。 2、本题是求一个数的-2进制,如果傻傻地按照二进制来肯定是错的啦~因为负数取余和我们想得不太一样。。。我的方法是遇到奇数的时候减一,再递归处理“这个数除以-2的值”,遇到偶数就直接递归处理“这个数除以-2的值”。一次AC~ #include using namespace std; void bin(int n){ if(n==0) ret原创 2013-08-26 20:04:19 · 320 阅读 · 0 评论 -
UVa OJ 106
1、这题是道典型的数论题。数论我没有系统学习过,也证不出别人那样严谨的步骤,只能背一下结论。膜拜大神! 2、摘抄某位ACMer的解法,真的很不错: 数论经典问题:构造本原勾股数组(PPT):a^2+b^2=c^2 , 其中a,b,c两两互质 1.证明a和b必定一奇一偶,并可以推导出c一定是奇数 。 证明后我们约定a是奇数,b是偶数,c为奇数,但a和b的大小不能确定 2.a^2+b^2=c原创 2013-08-25 23:17:59 · 318 阅读 · 0 评论 -
UVa OJ 128
1、刚开始没读懂题意,什么叫做把字符串看作数字?后来百度了下才知道,原来是将一个字符看作一个256进制的数(有8位,2的8次方是256)。 2、注意题目要输出的是CRC值mod“g"后的十六进制数,所以将字符串转化为数字的时候要随时注意mod”g",然后再用g减去这个值即为CRC值。 3、位运算的时候注意ans 4、一次AC~发现数学类的题目虽然很难想,但是不像模拟题那样容易错。 #inc原创 2013-08-25 01:00:20 · 325 阅读 · 0 评论 -
UVa OJ 10900
1、感谢Staginner详细的解题报告!否则我一定还在摸爬滚打。 2、这道题给出要求答的题目数量,以及概率p的下限t(最高为1),要求计算获得奖金的期望。 3、刚开始没注意p在【t,1】上均匀分布,以为答对的概率就是t,所以怎么也理解不了样例数据,后来才知道要利用连续型随机变量的期望公式来计算出p的“估计值”。(p相当于一个随机变量,无论是利用《概率论与数理统计》课本上的公式来积分,还是自己原创 2013-11-01 20:30:59 · 383 阅读 · 0 评论