摘要:转自笨小孩(sunhaowen)的空间 http://hi.baidu.com/%B1%BFС%BA%A2_shw/blog/item/5305e12c7289973e359bf768.html/index/0#comment数学类题目小结 从放暑假前周sir给我讲了一个用polya计数法和burnside定理做的题目(pku2409)后,突然觉得组合数学挺有意思,然后从那时起到现在几乎都在做这类的题目。做到现在感觉这类题目的一些基本知识点都差不多有所了解了,水题也刷了不少,但还有很多难题自己实在是做不动,所以准备把这类题目先放一放,然后把前段时间做的水题整理一下(供以后的初学者参考,大牛就不
阅读全文
摘要:hdoj 1299 Diophantus of Alexandria再次感叹自己的数学很悲剧。。。。转载地址http://hi.baidu.com/fbyz/blog/item/c8e23e889a4bce91a5c27245.htmlx 、y、n都是正整数,并且 显然,x >= n , y >= n ,现在假设 y = n +k (k为正整数) ,那么带入公式,可以得出 x = (n*(n+k))/k = n*n/k + n; 由于x 是正整数,现在的关键问题就是要求出 n*n/ k 有多少组正整数的可能,显然,所要求的就是 n*n 因子的个数// 问题已经非常接近答案了,但是最
阅读全文
摘要:hdoj 1271 整数对看了别人的解题报告,再次对自己数学能力表示悲哀~~~~~~对于这种问题,我们通常可以把这个数表示成这样:A = a*10^(k+1) + b*10^k + c ,b表示去掉的那一位。所以去掉后的数就变成了, B = a*10^(k+1) + c。A + B =( a * 11 + b ) * 10^k + 2 * c; 单个c比10^k次方小,但是2*k可能比10^k次方大,所以2*c = n%10^k 或者2*c = n%10^k+10^k; a, b, c的关系就弄清楚后,我们就可以进行枚举。枚举的顺序是先对k枚举,然后对c的两种情况枚举,其次枚举b。#inclu
阅读全文
摘要:/* * $File: test.cpp * $Date: Wed Feb 09 13:22:29 2011 +0800 * $Author: Zhou Xinyu <zxytim@gmail.com> * * a simple High precision integer implementation */#include <cstdio>#include <cstring>#include <cctype>#include <cmath>#include <algorithm>#include <cassert&
阅读全文
摘要:hdoj 1576 A/B(A/B)%C = (A*B^-1)%C = (A%C)*(B^-1)%C用扩展欧几里得求出B的逆元B^-1//x是a mod b的乘法逆元,y是b mod a的乘法逆元inline int extend_gcd( int a, int b, int &x, int &y ) { int tp, r; if( b == 0 ) { x = 1; y = 0; return a; } r = extend_gcd( b, a%b, x, y ); tp = x; x = y; y = tp - a / b * y; return r;}AC代码:#inc
阅读全文
摘要:hdoj 1695 GCD欧拉函数:欧拉函数是少于或等于n的数中与n互质的数的数目.欧拉函数和它本身不同质因数的关系:欧拉函数ψ(N)=N{∏p|N}(1-1/p)。(P是数N的质因数)如: ψ(10)=10×(1-1/2)×(1-1/5)=4; ψ(30)=30×(1-1/2)×(1-1/3)×(1-1/5)=8; ψ(49)=49×(1-1/7)=42。可以用筛选法求出欧拉函数。memset( euler, 0, sizeof(euler) );euler[1] = 1;for( i=2; i<maxn; ++i ) { i
阅读全文
摘要:奇:hdoj 1998 奇数阶魔方#include <iostream>#include <cstring>using namespace std;int num[20][20];void f(int x, int y, int n) { int x1, y1, i, j; /* for(i=0; i<n; ++i) { for(j=0; j<n; ++j) { printf("%4d", num[i][j]); } printf("\n"); } printf("\n\n");*/ if(num[
阅读全文
摘要:1.hdoj 3310 Volume of a cylinder求两个圆柱相交部分的体积。第一象限积分公式:sqrt(R * R - (r - x) * (r - x)) * sqrt(r * r - (r - x) * (r - x)); 从0积到r 。最后结果乘8。可是不知道为什么我用龙贝格积分却错了,用分割小块就AC了,忘路过大牛指点。分割小块:龙贝格法:
阅读全文