上一页 1 ··· 26 27 28 29 30 31 32 33 34 ··· 57 下一页

2011年7月22日

poj 1150 The Last Non-zero Digit

摘要: #include<iostream> // 求 n! / (n-m)! 最后一个非0位#include<cmath>using namespace std;int get2(int n) //计算n!中质因子2的出现次数{ if(n==0) return 0; return n/2+get2(n/2);}int get5(int n) ////计算n!中质因子5的出现次数{ if(n==0) return 0; return n/5+get5(n/5);}int g(int n,int x) //计算f(1) to f(n) 中,奇数数列中末尾为x(1,3,7,9)的数 阅读全文

posted @ 2011-07-22 16:14 sysu_mjc 阅读(140) 评论(0) 推荐(0) 编辑

poj 1183 反正切函数的应用

摘要: #include<iostream> // 2^31-1< 60000^2 <2^32-1,所以要用到unsigned int(unsigned long也行),用long long竟然TLEusing namespace std;int main(){ unsigned int m,n,a,sum; while(scanf("%d",&a)!=EOF) { for(m=a; ;m++) if((a*a+1)%m==0) break; n=(a*a+1)/m; sum=2*a+m+n; printf("%d\n",sum) 阅读全文

posted @ 2011-07-22 16:14 sysu_mjc 阅读(199) 评论(0) 推荐(0) 编辑

poj 3630 Phone List

摘要: // 题意: 给一组互不相同的号码,问其中是否有号码是另一号码的前缀#include <iostream> // trie树using namespace std ;struct Node { Node *next[10]; //数字0-9 int vis; //记录该节点所代表的号码是否有被访问过}table[100000];Node *root;int cur;void init(){ root=&table[0]; cur=1; for(int i=0;i<10;++i) root->next[i]=N... 阅读全文

posted @ 2011-07-22 15:16 sysu_mjc 阅读(143) 评论(0) 推荐(0) 编辑

poj 3292 Semi-prime H-numbers

摘要: #include <iostream> //线性筛+树状数组#include<stdio.h>using namespace std;#define Max 1000010int n,table[Max],vis[Max],prime[80000];int lowbit(int x){ return x&(-x);}void modify(int x){ if(vis[x]==0) { vis[x]=1; while(x<Max) { table[x]++; x+=lowbit(x); } }}int getsum(int x){ int s=0; whi 阅读全文

posted @ 2011-07-22 15:14 sysu_mjc 阅读(156) 评论(0) 推荐(0) 编辑

poj 3273 Monthly Expense

摘要: //题意:给你天数n,和每天需要花的钱,让你把这些天分成m份(每份都是连续的天),//要求每份的和尽量少,输出这个和。//一开始二分的上界为n天花费的总和(相当于分成1份),下界为每天花费的最大值(相当于分成n份),//然后二分,每次的mid值为(上界 + 下界)/ 2,然后根据mid值遍历n天花费,对花费进行累加,//每当超过mid值 份数++,看看这个mid值能把n天分成几份,如果份数大于m,表示mid偏小,下界 = mid + 1,//反之小于等于mid,上界 = mid,然后输出最后的mid值即可,复杂度为 O(nlogM)#include <iostream>#inclu 阅读全文

posted @ 2011-07-22 15:13 sysu_mjc 阅读(222) 评论(0) 推荐(0) 编辑

poj 3258 River Hopscotch

摘要: #include <iostream> //二分法,参照poj 3273#include <algorithm>using namespace std;int main(){ int list[50010],L,N,M,i; scanf("%d%d%d",&L,&N,&M); list[0]=0;list[N+1]=L; for(i=1;i<=N;++i) { scanf("%d",&list[i]); } sort(list,list+N+2); int l=0,r=L,mid,res; w 阅读全文

posted @ 2011-07-22 15:12 sysu_mjc 阅读(139) 评论(0) 推荐(0) 编辑

poj 3233 Matrix Power Series

摘要: // 计算(A + A^2 +....+A^k) mod m ,其中 A为n*n矩阵#include <iostream> //利用转移矩阵和二分法using namespace std; int n, m; struct node{ int matrix[31][62]; //把matrix拆分出两个n*n矩阵A,B,n最大为30,构造矩阵 E(A,B,0,1),记录成E(A,B)}; node multiply(node a,node b) //矩阵乘法 (A,B)* (C,D) =(A*C,A*D+B){ node res; memset... 阅读全文

posted @ 2011-07-22 15:11 sysu_mjc 阅读(153) 评论(0) 推荐(0) 编辑

poj 3122 Pie

摘要: #include <iostream> //二分查找#include <algorithm>#include <math.h>using namespace std;# define pi 3.1415926535898#define precisions 1e-5bool cmp(const double& a,const double& b) { return a>b;}int piece(double total,double a){ int m=0; while(total>=a) { m++; total-=a; } r 阅读全文

posted @ 2011-07-22 15:09 sysu_mjc 阅读(104) 评论(0) 推荐(0) 编辑

poj 3070 Fibonacci

摘要: /* 矩阵乘法 1 1题意:有一矩阵 A= 1 0 , 令B=A^n, 输出 B[0][1]的后四位数字 */#include <iostream> //矩阵乘法, 由于矩阵乘法具有结合律,所以计算A^n可以使用二分快速求幂using namespace std; struct node{ int g[2][2];};int m=10000;node multiply(node a,node b) //2*2矩阵相乘{ node res; res.g[0][0]=(a.g[0][0]*b.g[0... 阅读全文

posted @ 2011-07-22 15:08 sysu_mjc 阅读(129) 评论(0) 推荐(0) 编辑

poj 2777 Count Color

摘要: /* poj4 2777 Count Color 题意: 给你一个长度为L(L<=100000)的线段,还有t种颜色(t<30),整条线段初始化为颜色 1,有两种操作: C a b c : 将从a到b的线段涂上c颜色; P a b: 查询从a到b的线段上有多少种颜色。 颜色的表示方法: 颜色的种类不多(2<<T在int 范围内),因此使用二进制来存储颜色的信息, 右起第n位上有 1 则表示是颜色n。具体说来,就是用1表示颜色1,10表示颜色2,100表示颜色3, 1001 = 9表示 1 , 4 这2种颜色 ……依次类推,这样表示有一种好处,涂颜色相当于进行 或 运算, 阅读全文

posted @ 2011-07-22 15:07 sysu_mjc 阅读(133) 评论(0) 推荐(0) 编辑

上一页 1 ··· 26 27 28 29 30 31 32 33 34 ··· 57 下一页

导航