一些代碼-數(shù)學問題_第1頁
一些代碼-數(shù)學問題_第2頁
一些代碼-數(shù)學問題_第3頁
一些代碼-數(shù)學問題_第4頁
一些代碼-數(shù)學問題_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

UVAOJ10061nb0。Log10(a*b)=log10(a)+log(b)0N!分解為素數(shù)的積,記錄下<=B的素數(shù)因子的個數(shù)(B的原因代碼中解釋了N!的因子中(BN!B的因子用來B時結(jié)束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]代表數(shù)列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),現(xiàn)在兩人輪流取球,最后球的值總和大的人贏,問先手是否能贏#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是整數(shù),pa,pa的(p-1)p的余1。φ函數(shù)的值通式:φ(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…..(1-1/pn),p1,p2……pnx的所有質(zhì)因數(shù),x0的整數(shù)。φ(1)=1(1互質(zhì)的數(shù)(1)1本身。(12=2*2*3那么φ(12)=12*(1-1/2)*(1-1/3)=4nnφ(n)nn素的正整數(shù)的個數(shù),稱為n的函數(shù)值,這里函數(shù)φ:N→N,n→φ(n)稱為函數(shù)。m,n互質(zhì),φ(mn)=φ(m)φ(n)。n為奇數(shù)時,φ(2n)=φ(n),PrimitiveRoot假設一個數(shù)gPg^imodP的結(jié)果兩兩不同,且有1<g<P0<i<P,g可以稱為是P的一個原根,g^(P-11modP)當且僅當指數(shù)P-1的時候成立.(P是素數(shù)).簡單來說,g^imodpg^jmodp(p為素數(shù)sum次操作的話,其實有很多牌是經(jīng)過了多次翻11的總數(shù)的奇偶性是固定的。數(shù)公式必定有除法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個數(shù)大于x,把x1elseif(r>=xlll%2)==(x%2))?0:1;//當l<x<=r,由于無論怎么翻,其奇偶性必定相等,所以看l的奇偶性與x是否相同,相同那么知道最小必定變?yōu)?,否則變?yōu)?elsellx-r;//當x>r,那么在把1全部變?yōu)?的同時,還有x-r0變?yōu)閕f(r+x<=mrrr+x;//當r+x<=m的情況下,全部變?yōu)閑lseif(l+x<=mrrl+x)%2m%2)?m:m-1);//r+x>m但是elserr2*m-(l+x);//在l+x>m的情況下,等于我首先把m1變?yōu)榱?,那么我還要翻(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...數(shù)學題,等差數(shù)列的運用。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數(shù)列(0<=bi<=1)A0...01...1bi=ai0i<jbi<=bjbibjbibj的值都可以得到更優(yōu)的結(jié)果。所以,bi=bj。bi值一定相同。這樣,我們可以得到一個中間序列,x1x1,x2,...,x2,xm,...xm.x1xmxixixibi相等時取得最優(yōu)值。因此,我們可以把這兩段合并,求出B序列一定是這樣:y1y1ym,ym。所以我們可以用一個單調(diào)棧來維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//如果棧不滿足單調(diào)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出來的結(jié)果來算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問在自然數(shù)中,第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的話表示可以約分,直接輸出約分后的分數(shù)。分母盡可能大。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開始找出這個數(shù)能拆成的兩個數(shù)的積的可能性,然后和原先的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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論