
数学
文章平均质量分 60
vsooda
这个作者很懒,什么都没留下…
展开
-
HDU 1174
#include#include #define eps 1e-8#define zero(x) (((x)>0?(x):-(x))typedef struct point{double x,y,z;}point;int main(){ int T; double h1,r1,x1,y1,z1,tmp,s1,s2; double原创 2012-02-14 18:43:39 · 727 阅读 · 0 评论 -
HDU 1060 求N ^ N 的第一位数字 用log 降低位数
m=n^n;两边同取对数,得到,log10(m)=n*log10(n);再得到,m=10^(n*log10(n));然后,对于10的整数次幂,第一位是1,所以,第一位数取决于n*log10(n)的小数部分总之,log很强大啊,在求一个数的位数上,在将大整数化成范围内的整数上,在指数问题上#include #include using namespace std;int原创 2012-09-22 09:10:53 · 1799 阅读 · 0 评论 -
HDU 1077 枚举圆心, 数学
从所有点中依次取两点,然后判断到两点m, n距离为半径1的点centre(易知center在m, n连线的中垂线上)。然后判断其余有多少点在以centre为圆心的圆内,记作ans,最后找出最大的ans,就是要求的值。#include #include const double eps=1e-6;const int MAXN=305;struct point{ double x,y;原创 2012-09-23 20:27:35 · 1572 阅读 · 1 评论 -
HDU 1079 博弈
转载请注明出处,谢谢 http://blog.youkuaiyun.com/ACM_cxlove?viewmode=contents by---cxlove题目:每次可以后移一个月,或者后移一天,谁先到达2001年11月4日就赢了http://acm.hdu.edu.cn/showproblem.php?pid=1079找规律,不然是月份加一,还是日期加一,转载 2012-09-24 15:15:45 · 1220 阅读 · 0 评论 -
HDU 1163
计算方法是:这个数字根等于原数除以9的余数,因此这个计算过程常常称为“合九法”。如39/9=3.成立同余定理:如果两个乘积除以m的余数等于这两个数分别除以m的余数积。 例如:7%3=1 5%3=2 7*5/3=2=1*2#include using namespace std;int main(){ int n,a,sum,i; while(cin>>n&&n)原创 2012-11-20 18:19:53 · 982 阅读 · 0 评论 -
HDU 1370 打表 || 中国剩余定理
题意:有3个循环周期,周期天数分别为23、28、33。对于某一年,已知某年这3个周期的某一峰值分别是当年的第p、e、i天,问从第d天开始到最近一个满足3个周期都达到峰值的日期还有多少天。数据比较小,直接打表可过:# include int tab[40][40][40]; int cal(int num){ if (num <= 0) return num + 21252 ; r原创 2013-01-25 21:02:10 · 930 阅读 · 0 评论 -
HDU 1214 圆桌会议
刚开始觉得题目有问题。后来发现是相邻的才能交换。一个环形的圈怎样用最少次数把它从顺时针变成逆时针(只能相邻位置交换位置)一个环形,最优结果是把这个环分成 相差 最少的2部分,这2部分按照直线来求出结果再求和直线如果把1234 换成4321是冒泡的次数。。首先4123(3)+4312(2)+4321(1)=6重点是把n看成两个 n/2 ,然后求出进行反序(冒泡)的次数。n原创 2013-01-29 11:01:41 · 981 阅读 · 0 评论 -
HDU 1273 漫步校园 orz
乱搞题,n-1减去起点,把剩下的点分成尽可能相等的两部分1、2(为了得到尽可能大的答案)对于1内部来讲,显然总能保证“新鲜”,在新鲜1后,不难看出2的每个点都对应着一个“新鲜”#include using namespace std;int main(){ int n; while(scanf("%d",&n),n) printf("%d\n",(n-1)>>1); ret原创 2013-01-29 10:44:25 · 814 阅读 · 0 评论 -
PKU 3233 经典矩阵乘法
S = A + A2 +A3 + … + Ak. 的一个很好的求法是构造这样一个矩阵A A0 1然后这个矩阵自乘K次即可,也就是矩阵套矩阵 #include #include const int MAX = 65;int n, k, m, tn, mod;struct Mat{ int mat[MAX][MAX]; Mat() { memset(mat,原创 2013-01-16 16:46:57 · 839 阅读 · 0 评论 -
HDU 1046 数学规律题
#include#include#define p sqrt(2.0)int main(){ int t,n,m,min,max,v=1; scanf("%d",&t); while(t--&&scanf("%d %d",&n,&m)) { min=n<m?n:m; max=n<m?m:n; printf("Scenario #%d:\n",v++); if(!(m原创 2012-09-20 16:28:13 · 831 阅读 · 0 评论 -
HDU 1041 递推 + 大数模板
递推:0->10 ; 1->01; 00->1010; 10->0110; 01->1001; 11->0101;假设a[i]表示第i 步时候的00的个数,由上面的可以看到,00是由01 得到的,所以只要知道a[i-1]的01的个数就能够知道a[i]的00的个数了,那a[i-1]怎么求呢,原创 2012-09-19 17:25:12 · 1837 阅读 · 0 评论 -
HDU 2058
#includeint main(){ int n, m, i; while (scanf("%d%d", &m, &n), m+n) { for (i = 1; n/i-(i-1)/2>0; i++); for(i--; i && n/i+i/2 { if((n原创 2012-02-18 13:20:03 · 711 阅读 · 0 评论 -
2082 母函数
2082 找单词Problem Description 假设有x1个字母A, x2个字母B,..... x26个字母Z,同时假设字母A的价值为1,字母B的价值为2,..... 字母Z的价值为26。那么,对于给定的字母,可以找到多少价值Input 输入首先是一个整数N,代表测试实例的个数。然后包括N行数据,每行包括2转载 2012-02-19 09:34:53 · 487 阅读 · 0 评论 -
HDU 2048 2049 2068 错排题
2048 神、上帝以及老天爷Problem Description HDU 2006'10 ACM contest的颁奖晚会隆重开始了!为了活跃气氛,组织者举行了一个别开生面、奖品丰厚的抽奖活动,这个活动的具体要求是这样的:首先,所有参加晚会的人员都将一张写有自己名字的字条放入抽奖箱中;然后,待所有字条加入完毕,每人从箱中取一个字条;最后,如果取得的原创 2012-02-18 18:45:18 · 2945 阅读 · 0 评论 -
HDU 1097 1098 数学题 找规律
1097:思路:找规律!!!因为只要取最后一位,所以只与最后一位数有关。尾数是1,5,6的循环规律是1(不管多少次方尾数都是原数),尾数是4,9的循环规律是2,尾数是2,3,7,8的循环规律是4.为使代码简单,取最小公倍数4.#include using namespace std;int main(){ int a[4], m, n; while(cin >> m >> n原创 2012-09-13 10:35:40 · 1244 阅读 · 0 评论 -
HDU 1099 数学计算
这是一到简单题,但是题意比较难以理解!说白了就是求n/1+n/2+n/3+----+n/n!这道题就是直接求解,先利用同分的思想,即最小公倍数求出所有的的分母的最小公倍数!然后进行分数的求和!注意分子和分母的没有相除之前需要注意范围超过了整形#include using namespace std;_int64 gcd(_int64 a,_int64 b){ if(b==0) ret原创 2012-09-13 11:01:25 · 2051 阅读 · 0 评论 -
HDU 2574 素数因子数目
#include #include #include using namespace std;int prime[7000];int cnt;bool isok (int x){ for (int i = 0; i < cnt && prime[i]*prime[i] <= x; i++) if (x % prime[i] == 0) return false;原创 2012-09-16 19:21:58 · 658 阅读 · 0 评论 -
HDU 1124 n!中0的个数
做了几次超时,后来往上参考了。。。N! = 1 * 2 * 3 * (2*2) * 5 * (2*3) * 7... 产生10的原因是有2,5的因子,显然在N!中2的个数大于5的个数,所以只需求出5的个数即可 求 N! (1*2*3*4*5*...*N)里有多少个5其实可以转化成: N!中:是5的倍数的数+是5^2的倍数的数+5^3..... 如50!:原创 2012-10-09 16:23:51 · 2435 阅读 · 0 评论 -
HDU 1128 求是否self-number
由于该题是求一个数是不是“自身数”,而定义一个数是不是“自身数”的根据就是是否有祖先,又因为一个数的祖先一定比这个数要小,所以这就和筛选法很像了。#include #include #include using namespace std;char hash[1000005];void deal( int x ){ int rec = x; while( x > 0 )原创 2012-10-09 16:39:08 · 1210 阅读 · 0 评论 -
HDU 4506 快速幂
题意:每经过一单位时间,右移一位。t单位时间循环右移 t 位。 (字符串循环右移, 其实不用这么麻烦。。)。t 可能超出 n范围 故取模 每个元素乘上一个 k^t 。这里因为数字非常大,故需要使用快速幂方法。 就是移位。。WA了很多次。 需要注意的是:1. 快速幂疏忽了几点。current 每次都需要乘方的。 而且myk = myk * current 而不是加 long lo原创 2013-03-27 21:13:03 · 1034 阅读 · 0 评论