数学
sky_zdk
这个作者很懒,什么都没留下…
展开
-
uva 1645
#include<cstdio>using namespace std;const int MOD = 1e9 + 7;int dp[1010];int main(){ int t = 1,n; dp[1] = 1; for(int i = 2;i < 1001;i++){ for(int j = 1;j < i;j++){ if((i - 1) %...原创 2018-03-06 12:41:54 · 174 阅读 · 0 评论 -
poj 2800 LA 5916 求一个数模1到n 得到的和
#include#include#includetypedef long long LL;using namespace std;int main(){ LL n,k,t; while(~scanf("%lld%lld",&n,&k)){ LL res=0; if(n>k) res+=(n-k)*k; LL len=(LL)sqrt((double)k); for(i原创 2017-09-05 20:56:08 · 254 阅读 · 0 评论 -
uva 1521 一推数 分成若干组 每组的数相乘不能超过n 求最小分组
#include#includeusing namespace std;int vis[10020],prime[10020],cnt,n;void init(){ for(int i=2;i<=10010;i++){ if(!vis[i]){ for(int j=i+i;j<=10010;j+=i) vis[j]=1; prime[cnt++]=i; } }原创 2017-09-05 20:07:18 · 274 阅读 · 0 评论 -
poj 1777 梅森素数
#include#include#include#includeusing namespace std;int d[1000],t,n,dp[10000],cnt[8]={2,3,5,7,13,17,19,31};int ms[8]={3,7,31,127,8191,131071,524287,2147483647};int judge(int x){ int res=0; fo原创 2017-09-05 19:11:07 · 247 阅读 · 0 评论 -
uvalive 4998 高次幂的求模 (同余)
#include#includeusing namespace std;typedef long long LL;const long long MOD=1e12;int flag;LL k1,k2;LL multi(LL a,LL b,LL mod){ LL l=a * (b>>20) % mod * (1LL<<20) % mod; LL r=a * (b&((1LL<<20原创 2017-09-05 12:16:59 · 447 阅读 · 0 评论 -
uva 1404 求很大数的素数算法
#include#include#define MAX(x,y) ((x)>(y)?(x):(y))using namespace std;int prime[50050],cnt,vis[50050],ans[1000000];bool flag[200000000];void init(){ for(int i=2;i<=50000;i++){ if(!vis[i]){原创 2017-09-04 16:58:25 · 222 阅读 · 0 评论 -
uva 11014 三维空间中不共线的点
#include#includeusing namespace std;typedef long long LL;int prime[200010],cnt,vis[200010];LL cal(LL x){ return x*x*x-1;}void init(){ for(int i=2;i<=200002;i++) { if(!vis[i]) for(int j原创 2017-09-04 13:15:13 · 288 阅读 · 0 评论 -
uva 11645 求连续的11有多少个
#include#includeusing namespace std;const long long MOD=1e13;long long a,b,x;void add(long long t){ b+=t; a+=b/MOD; b%=MOD;}void solve(){ long long l=1,r=x; a=0,b=0; while(r) { add((原创 2017-07-28 15:58:45 · 246 阅读 · 0 评论 -
uva 1350
#include#includeusing namespace std;int dp[1001],sum[1001];void init(){ dp[1]=dp[2]=1; for(int i=3;i<=100;i++) dp[i]=dp[i-1]+dp[i-2]; sum[0]=0; for(int i=1;i<=100;i++) { sum[i]=sum[i-1]+d原创 2017-07-28 15:00:59 · 214 阅读 · 0 评论 -
LA 4064 求n个点 可以组成多少个锐角或者直角三角形
#include#include#include#include#define eps 1e-8#define PI acos(-1.0)using namespace std;struct node{ double x,y;}p[1260];double d[2560];int dcmp(double x){ if(fabs(x)<eps) return 0; e原创 2017-07-28 12:20:19 · 1303 阅读 · 0 评论 -
uva 11529 求一个平面内有多少个凸边形 或者求所有三角形包含点的总个数
#include#include#include#include#define PI acos(-1.0)using namespace std;struct node{ double x,y;}p[1260];double d[2560],res;double C(int n,int m){ double ans=1; if(m>n) return 0; for(原创 2017-07-28 10:41:31 · 324 阅读 · 0 评论 -
LA 5846 n个点 任意2点间有一条红色,或者蓝色边 求单色三角形的个数
#include#includeusing namespace std;int d[1060][1060];int main(){ int T,n; scanf("%d",&T); while(T--) { int res=0; scanf("%d",&n); for(int i=1;i<n;i++) for(int j=i+1;j<=n;j++) {原创 2017-07-27 10:50:38 · 921 阅读 · 0 评论 -
LA4382&&hdu2973
LA4382&&hdu2973威尔逊定理若p为素数,则(p−1)!=−1(modp)(p-1)!=-1(mod p)#include<cstdio>#include<cstring>using namespace std;bool vis[3002000];int ans[3000500];void init(){ for(int i=2;i<=3000100;i++){原创 2017-09-05 21:43:42 · 295 阅读 · 0 评论 -
LA 4384 求把一个矩形分成长宽相等的若干小矩形
#include#includeusing namespace std;int ok(int a,int b,int d){ for(int i=a;i<d;i+=a){ if((d-i) % b == 0) return 1; } return 0;}int main(){ int T,a,b,c,d; scanf("%d",&T); while(T--){ s原创 2017-09-06 07:58:15 · 900 阅读 · 0 评论 -
uva 1210 数学
#includeusing namespace std;int vis[10100],pri[10010],num,n;void init(){ num=0; for(int i=2;i<=10010;i++){ if(!vis[i]){ pri[num++]=i; for(int j = i + i;j <= 10010;j += i) vis[j]=1; } }原创 2018-03-05 12:21:34 · 294 阅读 · 0 评论 -
uva 12063 含有相同个数0和1 并且是k的倍数 的数的个数 DP
#include#includeusing namespace std;typedef long long LL;LL dp[60][60][120];int main(){ int T,t = 1; int n,mod; scanf("%d",&T); while(T--){ scanf("%d%d",&n,&mod); printf("Case %d: ",t++);原创 2018-03-07 09:12:45 · 217 阅读 · 0 评论 -
uva 11526
网上推出的公式 2*Σ(n/i) - n*n#include#include#includeusing namespace std;int main(){ int T,n; scanf("%d",&T); while(T--){ long long res = 0; scanf("%d",&n); int m = sqrt(1.0 * n); for( int i原创 2018-03-07 07:57:43 · 212 阅读 · 0 评论 -
uva 10385 一个单峰函数(由min(很多一次函数)构成)和一个一次函数的差值 也是单峰函数
#include#include#include #includeusing namespace std;int n;double t,v1[100],v2[100];double cal(double r){ double res=100000000,k=t-r; double s=r/v1[n-1]+k/v2[n-1]; for(int i=0;i<n-1;i++){原创 2017-09-07 10:52:42 · 438 阅读 · 0 评论 -
uva 10668 二分
#include#include#include#define PI acos(-1.0)using namespace std;double L,n,C;double cal(double rad){ return L*rad/sin(rad);}int main(){ while(scanf("%lf%lf%lf",&L,&n,&C)==3&&L>=0){ double原创 2017-09-07 09:35:00 · 195 阅读 · 0 评论 -
uva 11149 矩阵快速幂 求矩阵1-n次幂的和
#include#include#define mod 10using namespace std;int n;struct matrix{ int d[50][50];};matrix add(matrix a,matrix b){ matrix c; memset(c.d,0,sizeof(c.d)); for(int i=0;i<n;i++) for(int j=0;原创 2017-09-07 08:14:31 · 317 阅读 · 0 评论 -
uva 10655 公式变形 矩阵快速幂
#include#includetypedef long long LL;using namespace std;struct matrix{ LL d[3][3];};matrix cal(matrix a,matrix b){ matrix c; for(int i=0;i<2;i++) for(int j=0;j<2;j++){ c.d[i][j]=0; for(原创 2017-09-07 06:53:04 · 245 阅读 · 0 评论 -
uva 11605 概率 化简公式
给一个数 每次加1的概率固定的 求k次后 他是奇数的概率 (可用公式直接推到出来 不用模拟)原创 2017-09-06 18:52:01 · 437 阅读 · 0 评论 -
uva 11637
#include#include#include#includeusing namespace std;long double fac[100010];void init(){ for(int i=1;i<100010;i++) fac[i]=fac[i-1]+log((long double)i); }double solve(int n,int k){ if(n==1)原创 2017-09-06 18:14:44 · 237 阅读 · 0 评论 -
uva 10491 概率
首先我们有 aa+b\frac{a}{a+b}的概率选出错误的 之后我们又有 ba+b−c−1\frac{b}{a+b-c-1}的概率换成正确的。 同理 : 还有ba+b\frac{b}{a+b}的概率选出正确的,之后有b−1a+b−c−1\frac{b-1}{a+b-c-1}的概率还是换成正确的 。 这样把2个可能加起来就行了。 #include<cstdio>#include<cstrin原创 2017-09-06 12:05:42 · 180 阅读 · 0 评论 -
uva 11181 条件概率
n个人买东西,每个人有pi的概率买东西 ,其中有r个人买了东西,问每个人实际买东西的概率原创 2017-09-06 11:24:10 · 174 阅读 · 0 评论 -
LA 3720 Highway n x m的点阵 有多少条直线穿过至少2个点
#include#includeusing namespace std;int d[360][360],n,m;int gcd(int a,int b){ if(b==0) return a; else return gcd(b,a%b);}void init(){ for(int i=1;i<=300;i++) for(int j=1;j<=300;j++) {原创 2017-07-27 10:33:45 · 539 阅读 · 0 评论 -
uva 10883
#include#include#include#includeusing namespace std;int main(){ int T,t=1,n; scanf("%d",&T); while(T--) { scanf("%d",&n); double res=0,c1=0,t1=(n-1)*log(2); for(int i=0;i<n;i++)原创 2017-07-27 09:11:29 · 296 阅读 · 0 评论 -
uva 11461
#include#includeusing namespace std;int main(){ int a,b; while(~scanf("%d%d",&a,&b)&&(a+b)) { int l=-1,r=-1; for(int i=1;;i++) { if(l==-1&&i*i>=a) l=i; if(i*i>b) { r=i;原创 2017-07-26 15:53:45 · 360 阅读 · 0 评论 -
hdu 5902
#include#includeusing namespace std;int gcd(int a,int b){ if(b==0) return a; else return gcd(b,a%b);}bool vis[1010];int d[1000];int main(){ int T,n; scanf("%d",&T); while(T--) { mem原创 2017-08-01 09:35:02 · 254 阅读 · 0 评论 -
卡特兰数 hdu 5673
卡特兰数的性质卡特兰数有一些优美的性质,如通项公式一 Cn=1n+1Cn2n=Cn2n−Cn−12nCn=1n+1C2nn=C2nn−C2nn−1;通项公式二 Cn=1n+1∑i=0n(Cin)2Cn=1n+1∑i=0n(Cni)2;递推公式一 Cn+1=2(2n+1)n+2CnCn+1=2(2n+1)n+2Cn,且C0=1C0=1;原创 2017-08-01 09:18:47 · 353 阅读 · 0 评论 -
LA 5092 Permutation Counting
#include#include#define MOD 1000000007using namespace std;long long dp[1060][1060];void init(){ dp[1][0]=1; dp[1][1]=0; for(int i=2;i<=1000;i++) for(int j=0;j<i;j++) { dp[i][j]=(dp[i-1][j原创 2017-07-31 15:48:26 · 229 阅读 · 0 评论 -
uva 10237 n x n棋盘上放k个棋子 棋子不能在同一斜线上 求总类数
#include#includeusing namespace std;long long dp1[36][96],dp2[36][96];int n,k;void init(){ for(int i=0;i<=36;i++) dp1[i][0]=dp2[i][0]=1; for(int i=1;i<=36;i++) for(int j=1;j<=2*i-1;j++) {原创 2017-07-30 10:51:29 · 629 阅读 · 0 评论 -
uva 11481 一个序列前m个中有k个不动,其他可动可不动 共有几种情况
#include#include#define MOD 1000000007using namespace std;int n,m,k;long long res,d[1060],c[1060][1060];;void init(){ d[0]=1; d[1]=0; for(int i=2;i<=1000;i++) d[i]=((d[i-1]+d[i-2])%MOD * (i原创 2017-07-30 09:43:43 · 329 阅读 · 0 评论 -
poj 1061 扩展欧几里德
扩展欧几里德原创 2017-05-08 13:09:30 · 206 阅读 · 0 评论 -
poj 1959 Darts
#include#includeint d[100];int num[100];int main(){ for(int i=0;i<=20;i++) { d[i]=1*i; d[i+20]=2*i; d[i+40]=3*i; } d[61]=25; d[62]=50; int T,t=1; int sum; scanf("%d",&T); while(T-原创 2017-05-07 15:25:14 · 433 阅读 · 0 评论 -
poj 1958 4汉诺塔问题
4汉诺塔问题原创 2017-05-07 13:54:45 · 414 阅读 · 0 评论 -
poj 1953 数列中只有0和1 且1不能和1相邻,求有几种可能
数列中只有0和1 且1不能和1相邻,求有几种可能原创 2017-05-07 13:08:34 · 508 阅读 · 0 评论 -
poj 1019 求一个1到n的序列中,第k个数字是多少
求一个1到n的序列中,第k个数字是多少原创 2017-05-11 21:23:55 · 1017 阅读 · 0 评论 -
poj 2356 鹊巢原理
n个数,任意一个组合的和是否能为n的倍数原创 2017-05-11 20:24:51 · 512 阅读 · 0 评论 -
uva 10673 exgcd
#include#include#includeusing namespace std;int exgcd(int a,int b,int &x,int &y){ int d=1; if(b==0) { x=1; y=0; return a; } else { d=exgcd(b,a%b,y,x); y-=(a/b)*x; } return d;}原创 2017-08-02 10:38:04 · 199 阅读 · 0 评论