一些代码-数学问题_第1页
一些代码-数学问题_第2页
一些代码-数学问题_第3页
一些代码-数学问题_第4页
一些代码-数学问题_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

UVAOJ10061nb0。Log10(a*b)=log10(a)+log(b)0N!分解为素数的积,记录下<=B的素数因子的个数(B的原因代码中解释了N!的因子中(BN!B的因子用来B时结束B0.usingnamespacestd;intsu[ intdigit(intnn,int{intdoublesum=0;}intzero(intnn,int{inti,j;intintnum;{{{}}}{{{elsegotoend;}}}return}int{intnn,bb;inti;intzz,dd;{cout<<zz<<""<<dd<<endl;}return}:超长方体(1+2+…+n)^4-超立方体usingnamespacestd;intmain(){longlonglonglongs2[101],s3[101],s4[101];longlongr2[101],r3[101],r4[101];{r2[i]=(i*(i+1)/2)*(i*(i+1)/2)-r3[i]=(i*(i+1)/2)*(i*(i+1)/2)*(i*(i+1)/2)-}{cout<<s2[n]<<""<<r2[n]<<""<<r3[n]<<""<<s4[n]<<"}return}UVAOJ10014a0,an+1,c1,c2,…cn,ai=(a(i-1)+a(i+1))/2-ci,a1。先全部累加:a1+an=a0+a(n+1)–2Σci(1<=i<=n)按照上面得出的公式再累加:(n+1)a1n*a0a(n+12ΣΣcj(1<=j<=i#include<stdio.h>#include<string.h>intmain(){intnCases;intnN;doublea0,an1;doublea1;doubleci[3000+10];doublec;doublesum;scanf("%d",&nCases);while(nCases--){scanf("%d",&nN);scanf("%lf%lf",&a0,&an1);sum=0.0;memset(ci,0,sizeof(ci));for(intj=1;j<=nN;++j){scanf("%lf",ci[j]ci[j1]c;//ci[j]代表数列ci中第1-j的sum+=}a1=(nN*a0+an1-2*sum)/(nN+printf("%.2f",if(nCases){}}return}HDU486120141k,pk1^i+2^i+...+(p-1)^imodp(1i<=k),现在两人轮流取球,最后球的值总和大的人赢,问先手是否能赢#include<cstdio>#include#include<cstdio>#include<cstring>#include<cmath>longlongk,intmain()while(~scanf("%lld%lld",&k,&p)){if(k/(p-1)%2)printf("YES\n");elseprintf("NO\n");}return}≡1(moda是整数,pa,pa的(p-1)p的余1。φ函数的值通式:φ(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…..(1-1/pn),p1,p2……pnx的所有质因数,x0的整数。φ(1)=1(1互质的数(1)1本身。(12=2*2*3那么φ(12)=12*(1-1/2)*(1-1/3)=4nnφ(n)nn素的正整数的个数,称为n的函数值,这里函数φ:N→N,n→φ(n)称为函数。m,n互质,φ(mn)=φ(m)φ(n)。n为奇数时,φ(2n)=φ(n),PrimitiveRoot假设一个数gPg^imodP的结果两两不同,且有1<g<P0<i<P,g可以称为是P的一个原根,g^(P-11modP)当且仅当指数P-1的时候成立.(P是素数).简单来说,g^imodpg^jmodp(p为素数sum次操作的话,其实有很多牌是经过了多次翻11的总数的奇偶性是固定的。数公式必定有除法C(n,m)=n!/(m!*(n-m)!)但是我们知道费定理a^(p-1)=1%p那么a^(p-1)/a=1/a%p得到a^(p-2)=#include<iostream>#include<stdio.h>#include<string.h>#include#include<iostream>#include<stdio.h>#include<string.h>#include<algorithm>usingnamespacestd;#definemod#define #definemaxn100000+5LLf[maxn];void{inti;f[0]=1;for(i=1;i<maxn;i++)f[i]=(f[i-1]*i)%mod;}LLquickmod(LLa,LL{LLans=1;{{ans=b--}a=}return}int{intn,m,i,j,k,l,r,x,ll,rr;{l=r=for(i=0;i<n;{if(l>=xlll-x;//当最小的1个数大于x,把x1elseif(r>=xlll%2)==(x%2))?0:1;//当l<x<=r,由于无论怎么翻,其奇偶性必定相等,所以看l的奇偶性与x是否相同,相同那么知道最小必定变为0,否则变为1elsellx-r;//当x>r,那么在把1全部变为0的同时,还有x-r0变为if(r+x<=mrrr+x;//当r+x<=m的情况下,全部变为elseif(l+x<=mrrl+x)%2m%2)?m:m-1);//r+x>m但是elserr2*m-(l+x);//在l+x>m的情况下,等于我首先把m1变为了0,那么我还要翻(l+x-m)张,所以最终得到m-(l+x-m)1l=ll,r=}LLsum=for(i=l;i<=r;i+=2)//使用 }return}HDU49192014 n最大是先乘不部拿出1就是外面加上个kk异或0=k所以拿出外面也k。JAVA方便,上面的递推式用简单的递归就行了。importimportjava.util.*;importjava.io.*;importpublicclassMainpublicstaticBigIntegertwo=BigInteger.valueOf(2);publicstaticBigIntegerfour=BigInteger.valueOf(4);publicstaticBigIntegersix=BigInteger.valueOf(6);publicstaticHashMap<BigInteger,BigInteger>map=newHashMap<BigInteger,publicstaticBigIntegerF(BigIntegern){if(map.containsKey(n))returnBigIntegerBigIntegertmp1=n.divide(two);BigIntegertmp2=n.mod(two);BigIntegertmp3=tmp1.subtract(BigInteger.ONE);if( pareTo(BigInteger.ONE)==0)tmp1=F(tmp1).multiply(four).add(tmp1.multiply(six));tmp1=map.put(n,tmp1);returntmp1;}publicstaticvoidmain(String[]args){Scannercin=newScanner(System.in);map.put(BigInteger.ZERO,BigInteger.ZERO);map.put(BigInteger.ONE,BigInteger.ZERO);while(cin.hasNext()){BigIntegern=cin.nextBigInteger();}}}HDU2058找一个子序列的和便是Ma+1a+2...数学题,等差数列的运用。Sna1+an)*n2a1a1n-1*d)*n/2#include<stdio.h>#include<math.h>int{intn,m,#include<stdio.h>#include<math.h>int{intn,m,a,while(scanf("%d%d",&n,&m)&&(n||{len=(int)sqrt(2*m);while(len--){a=m/(len+1)-len/if((2*a+len)*(len+1)/2==m)printf("[%d,%d]\n",a,}}return}HDU49232014AB数列(0<=bi<=1)A0...01...1bi=ai0i<jbi<=bjbibjbibj的值都可以得到更优的结果。所以,bi=bj。bi值一定相同。这样,我们可以得到一个中间序列,x1x1,x2,...,x2,xm,...xm.x1xmxixixibi相等时取得最优值。因此,我们可以把这两段合并,求出B序列一定是这样:y1y1ym,ym。所以我们可以用一个单调栈来维bi值。#include<iostream>#include<cstdio>#include<cstring>#include<cstdlib>#include<cmath>#include<algorithm>#include<string>#include<queue>#include<stack>#include<vector>#include<map>#include<set>#include#include<iostream>#include<cstdio>#include<cstring>#include<cstdlib>#include<cmath>#include<algorithm>#include<string>#include<queue>#include<stack>#include<vector>#include<map>#include<set>#include<functional>#include<time.h>usingnamespacetypedefpair<double,int>constintINF=constintMAXN=(int)intinta[MAXN];doubleb[MAXN];PDIsk[MAXN//inttail//栈顶指voidvoidsolve()tail0//for(inti=0;i<n;i++)sk[tailmake_pair(1.0*a[i1//whiletail>1&&sk[tail-1].first<=sk[tail-2].first//如果栈不满足单调intcnt=sk[tail-1].second+sk[tail-2].second;doubletmp=sk[tail-2]=make_pair(tmp,cnt);}}//for(inti=0,j=0;i<tail;for(intk=0;k<sk[i].second;k++)b[j++]=sk[i].first;doubleans=for(inti=0;i<n;ans+=(a[i]-b[i])*(a[i]-printf("%f\n",}intmain(){intT;scanf("%d",while(T--)scanf("%d",for(inti=0;i<n;i++)scanf("%d",&a[i]);}return}HDU49372014nbase3,4,5,6组成的话,basenn,求有多少个幸运进制。无穷多个的话输出-1,单个位置9用相应的字符表示。3100001e124位,直接枚举每一位计算N即可#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<vector>#include<utility>#include<stack>#include<queue>#include<map>#include<deque>#include<cmath>#definemax(x,y)#definemin(x,y)usingnamespace#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<vector>#include<utility>#include<stack>#include<queue>#include<map>#include<deque>#include<cmath>#definemax(x,y)#definemin(x,y)usingnamespacelonglongx,N;intans;inta[6];map<int,bool>mapp;boolcheck(longlongx)//{{if(x>=3&&x<=6)return1;elsereturn0;}for(inti=3i<=min(6,N-1i++)//6N-1if((x-i)%N==0&&check((x-i)/N))//3-6能被三整出,returnreturn}voiddfs(intp)//100003,4,5,6枚举这三位二分进制算{if(p==3||{longlongl=1e4,r=1e12;//最大最小边界if(p==4r=1e6;//如果四位那么最大边界可以缩小{longlongm=(l+r)/2;longlongtmp=0;for(inti=1;i<=p-1;i++)if(tmp>x)r=m;elsel=m;}longlongfor(inti=1;i<=p-1;tmp=tmp*l+a[i];//dfs出来的结果来算xif(tmp==x&&l!=1e4&&mapp[l])//10000map中之前没有这进制{}if(l!=r&&r!=1e4)//r{for(inti=1;i<=p-1;i++)if(tmp==x&&{}}}if(p==4)for(inti=3i<=6i++)//3-6{}}int{inttt;for(intfor(intt=1;t<=tt;{printf("Case#%d:",t);{}for(N=4;N<=10000;N++)//4到10000直 进}return}HDU49522014xkkxxk的倍x。(1<=xk<=10^10)#include#include<cstdio>longlongx,s;int;intmain(){while(1){if(x==0&&s==0)break;for(inti=1;i<s;i++){if(x<i+1)}printf("Case#%d:%I64d\n",++}}SPOJ10232问在自然数中,第n3intcntfor(inti=2;i<=n;{ifni0)//{while(n%i==0{n/=}}}returncnt>=#include<iostream>#include<cstdio>usingnamespacestd;intans[1111]={…};intmain(){intn,m;{}}livearchive59861,表示他们之中有人赢了后面某几人。3346n(n-1)/2。usingnamespacestd;intints[51],p[51];intt,i,n,res;}}}return}c/d0<c<d<busingnamespacestd;intan[100]; (inta,int{intr=0;{}return}intfenjie(inta,intb,intan[])//{intn=0;intt;{}returnn;}int{intn,A,B,C,D;{for(int{intd= {}intlen=fenjie(A,B,an);for(intj=len-2;j>=0;j--{intt=an[j]*D+C;}}}return}扩展算法是用来在已知a,b求解一组x,y使得ax+by= (a,b)=d(解一定存在,intex(inta,intb,int&x,int&y){if(b==0){x=1;y=0;return}intr=ex(b,a%b,x,intt=x;x=y;y=t-a/b*y;returnr;}1(0的话表示可以约分,直接输出约分后的分数。分母尽可能大。a*d-b*c=1b*c-由扩展a*x+b*y=(a,b);所以d=x,c=-y或者c=y,d=-int64int64int64int64 int64 (int64a,int64b,int64&x,int64{int64if(b==0){x=1;y=0;returna;else{ans=extended_ (b,a%b,x,y);t=x;x=y;y=t-(a/b)*y;}returnans;}int{{ d1=(x+b)%b;c1=(-c2=(y+a)%a;d2=(-if(d1<d2)printf("%I64d/%I64d\n",c2,d2);elseprintf("%I64d/%I64d\n",c1,d1);}return}CodeforcesRound#266a*b6个直接,从6*n开始找出这个数能拆成的两个数的积的可能性,然后和原先的ab进行比#include<iostream>usingnamespacestd;typedeflonglongll;intmain(){lln,a,b;lli,j;while(cin>>n>>a>>{n*=if(a*b>={cout<<a*b<<cout<<a<<""<<b<<endl;}while{for(i=min(a,b);i*i<=n;i++)//拆当前{if(n%i=={j=n/if(i>=min(a,b)&&j>=max(a,{cout<<n<<if(a>b)cout<<j<<""<<i<<endl;elsecout<<i<<""<<j<<endl;gotoend;}}}}}return}Dnk(xix平均)^2xi^2x平均^22*xi*x平均所以方差=∑xi^2+n*x平均-2*∑xi*x平均事先计算∑xi^2和∑xi,便可以以o(n)#define#define_CRT_SECUR

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论