锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>
]]>
榪欓亾棰樻嵁璇存槸緇勫悎鏁板鐨勯錛屼絾鏄垜鏄敤鍔ㄦ佽鍒掍綔鐨?br>涓妛indows瀹炲湪鍚笉榪涜錛屽氨鍦ㄨ崏紼跨焊涓婅儭鍐欎貢鐢伙紝鑾悕鍏跺鐨勬ā鎷熷嚭鏉ヤ簡
涓昏鎴戞槸瑕佸~琛紝鐘舵佹柟紼嬶紝鎴戜笉鐭ラ亾璇ユ庝箞鍐欙紝鎴戞ā鎷熶笅榪囩▼濂戒簡錛?br>4
1 2 4 7
37 37 22 7
2
0 15 15 6
3
0 0 9 5
4
0 0 4 4
5
0 0 0 3
6
0 0 0 2
7
0 0 0 1
#include<iostream>
#include<algorithm>
using namespace std;
#define Max 35
__int64 num[Max],dice[Max];
bool cmp(__int64 a,__int64 b)
{
return a<b;
}
void solve(int n)
{
__int64 i,j;
for(i=1;i<=dice[n];i++)
num[i]=1;
for(i=n;i>=1;i--)
for(j=dice[i]-1;j>=0;j--)
num[j]+=num[j+1];
}
int main()
{
int n,i;
while(scanf("%d",&n)!=EOF&&n){
memset(dice,0,sizeof(dice));
memset(num,0,sizeof(num));
for(i=1;i<=n;i++)
scanf("%I64d",&dice[i]);
sort(dice+1,dice+n+1,cmp);
solve(n);
printf("%I64d\n",num[1]);
}
return 0;
}
ps:榪欓亾棰樿Long long
]]>
ax+ny=b;
褰撴眰瑙鏃訛紝鎴戜滑鍏堢敤鎵╁睍嬈у嚑閲屽痙extended_eculid(a,n,&x',&y');
閫氳繃璁$畻鐨剎'鍜寉'鏉ヨ綆梮
x鍙兘娌¤В錛屼篃鍙兘鏈塪涓笉鍚岀殑瑙?br>褰撴眰瑙f煇浜涢棶棰樼殑鏃跺欙紝鎴戜滑瑕佹眰寰楀埌鏈灝忔瑙o紝濡傛灉x'*(b/d)<0鏃訛紝鎴戜滑搴旇鍦ㄦ瑙g殑鍩虹涓婄戶緇姞n/d
闈掕洐闂鎴戝氨鏄繖閲岄敊浜嗭紝鎴戞槸鍦ㄦ渶灝忚В鐨勫熀紜涓婂姞n,
鏈濂戒笉瑕佸繕浜嗗n鍙栨ā銆?br>http://acm.pku.edu.cn/JudgeOnline/problem?id=1061
//SA-SB=kL(k涓烘暣鏁?
//SA=x+pm SB=y+pn
//(x-y)+p(m-n)=kL
//p(n-m)+kL=x-y
//ax+by=n<=>a'x+b'y=n/gcd(a,b)(姝ゆ椂a'涓巄'浜掕川)
//鑻0,y0涓烘鍑犻噷寰楁墍寰楄В
//x=x0+b't y=y0-a't
#include<iostream>
__int64 Ext_Euclid(__int64 a,__int64 b,__int64* x,__int64* y)
{
__int64 p,q,d;
if(a==0){*x=0;*y=1;return b;}
if(b==0){*x=1;*y=0;return a;}
d=Ext_Euclid(b,a%b,&p,&q);
*x=q;
*y=p-(a/b)*q;
return d;
}
int main()
{
/*freopen("1.IN","r",stdin);
freopen("my.OUT","w",stdout);*/
__int64 x,y,m,n,l;//x涓篈鐨勮搗濮嬬偣,y涓築鐨勮搗濮嬬偣
//m涓簒鐨勬闀匡紝n涓簓鐨勬闀匡紝l涓虹含搴﹂暱
__int64 c,a,d;
__int64 p,q;
while(scanf("%I64d%I64d%I64d%I64d%I64d",&x,&y,&m,&n,&l)!=EOF){
if(n==m)printf("Impossible\n");
else {
if(m>n){a=m-n;c=y-x;}
else {a=n-m;c=x-y;}
d=Ext_Euclid(a,l,&p,&q);
if((x>y?(x-y):(y-x))%d)printf("Impossible\n");
else {
p*=c/d;
while(p<0)p+=l/d;//榪欓噷閿欎簡錛屾渶灝忕殑閭d釜涓嶆槸榪欎箞鍔犵殑
p=p%l;
printf("%I64d\n",p);
}
}}
return 0;
}
E Encrypted
榪欓亾棰樺氨鏄畝鍗曠殑搴旂敤鎵╁睍鐨勬鍑犻噷寰鳳紝騫朵笉娑夊強妯$嚎鎬ф柟紼?br>
#include<iostream>
#define MaxN 100005
char word[MaxN];
int data[MaxN],keys[MaxN];
typedef struct node{
int d;
int x;
int y;
void operator=(node b)
{
d=b.d;
x=b.x;
y=b.y;
}}NODE;
NODE EXTENDED_EUCLID(int a,int b)
{
NODE first,sec;
if(b==0){
sec.d=a;
sec.x=1;
sec.y=0;
return sec;
}
first=EXTENDED_EUCLID(b,(a%b+b)%b);
sec.d=first.d;
sec.x=first.y;
sec.y=first.x-(a/b)*first.y;
return sec;
}
int main()
{
int n,i;
node tmp;
while(scanf("%s",word)!=EOF){
memset(data,0,sizeof(data));
memset(keys,0,sizeof(keys));
int len=strlen(word);
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&data[i]);
for(i=0;i<n;i++)
scanf("%d",&keys[i]);
for(i=0;i<n;i++){
tmp=EXTENDED_EUCLID(data[i],keys[i]);
while(tmp.x<0)
tmp.x+=keys[i]/tmp.d;
printf("%c",word[tmp.x%len]);
}
printf("\n");
}
return 0;
}
]]>
http://202.120.80.191/problem.php?problemid=1868
榪欓亾棰樻兂娉曞叾瀹炰笉闅撅紝鍙槸寮濮嬬殑鏂瑰悜灝遍敊浜嗭紝鍋氱殑鏃跺欐湁縐嶆姇鏈哄彇宸х殑鎰熻錛岃櫧鐒剁煡閬撴槸閿欑殑錛屼絾鏄垜涔熻鍘昏瘯錛屽懙鍛碉紝涓澶存挒鍒板簳
棣栧厛鎵撹川鏁拌〃錛岀劧鍚庢壘鍒板皬涓嶯鐨勬瘡涓川鏁扮殑鏈澶х郴鏁幫紝寮濮嬩竴澶村氨鎵庤繘浜嗙敤淇╂暟鐨勪箻縐幓闄ゅ叕綰︽暟鐨勬柟娉曞仛錛岃繖鏄劇劧涓嶅鍟婏紝瑕佸幓妯$殑闃匡紝鍝?br>涓嬮潰鏄瀮鍦句唬鐮侊細
#include<iostream>
#include<math.h>
#define MaxN 500005
#define M 987654321
int notP[MaxN];
using namespace std;
void init()
{
int i,j;
memset(notP,0,sizeof(notP));
notP[1]=1;
for(i=2;i<sqrt((double)MaxN);i++)
if(notP[i]==0){
for(j=2;j*i<MaxN;j++)
notP[j*i]=1;
}
}
int solve(int n)
{
int i,ans=1,t;
for(i=2;i<=n;i++){
if(notP[i])continue;
t=n;
while(t>=i){
ans=(((__int64)ans)*i)%M;
t/=i;
}
}
return ans;
}
int main()
{
int N,ans;
init();
while(scanf("%d",&N)!=EOF){
ans=solve(N);
printf("%d\n",ans);
}
return 0;
}
B棰樼瓑浼氬効鍐嶈錛屼粬鏄垜鐨勭棝
http://202.120.80.191/problem.php?problemid=1869
C棰楥ards
http://202.120.80.191/problem.php?problemid=1870
榪欓亾棰樺紑濮嬬敤o(n2)鐨勫仛鐨勶紝騫舵病鏈夋兂鍒拌鎬庝箞鍋氾紝鍚庨潰瓚呮椂錛屾墠鏄槸榪欑敤o(n)鐨勫仛錛屽紑濮嬫兂鐨勪竴鐩撮兘涓嶆竻妤?br>涓昏鏄湪姣忔褰撳墠縐婚櫎鎯呭喌涓嬪張鍑虹幇浜唒resent_numR>present_numB鐨勬儏鍐碉紝灝辮鏇存柊鍒囩墝鐐癸紝騫朵笖涔熻鍚屾椂鏇存柊鍒囩墝鑰岀Щ闄ょ殑綰㈢墝鎴栭粦鐗?br>涓涓嬫槸鎴戠殑娌′漢鍝佺殑浠g爜錛氾紙鎴戣繖涔堣涓鐐歸兘涓嶈繃鍒嗭級
#include<iostream>
#include<cstring>
#define MaxN 100005
char deck[MaxN];
int main()
{
int numR,numS,i,k,remR,remS,len;
while(scanf("%s",deck)!=EOF){
remR=remS=numR=numS=k=0;
len=(int)strlen(deck);
for(i=0;i<len;i++){
if(deck[i]=='R')numR++;
else numS++;
if(numR-remR>numS-remS){
remR=numR;
remS=numS;
k=i+1;}
}
printf("%d\n",k);
}
return 0;
}
D棰?DICE
榪欐槸鎸夌収瑙i鎶ュ憡鍐欏緱錛屾槸涓閬撳姩鎬佽鍒掗錛屽姩鎬佽鍒掕繕鏄鍧氭寔緇х畫鍋氾紝姣忔閮介潬钂欑潃鎯沖埌鏄笉琛岀殑
瑕佺敤鐪肩潧鐩存帴鍙戠幇瀹冦?br>榪欓亾棰橀鍏堢敤涓compute鍑芥暟鎶婃瘡嬈$敤size[]鐨勭瓫瀛愶紝鎺穘umSize涓嬬殑鎵寰楁瘡縐嶅彲鑳界粨鏋滅殑姒傜巼淇濆瓨鍦╬涓?br>void compute(double p[],int size[],int numSize)
鍦ㄤ富鍑芥暟涓垜浠垎鍒妸A,B鐨勭粨鏋滅殑璁$畻鍑烘潵
鑰屽悗瀵笲榪涜澶勭悊錛岃繖閲屽悓鏍鋒槸鍒╃敤鍔ㄦ佽鍒掔殑鎬濇兂錛屽皢pB[i]涓紝鐐規(guī)暟銆坕鐨勬鐜囦繚瀛樺湪tmp[i]涓?br>鐒跺悗緇撳悎tmp[],pA[]錛岃綆楃粨鏋滆緭鍑恒?br>瀹規(guī)槗鍑洪敊鐐癸細
鍦╟ompute鍑芥暟涓璮or(j=MaxS-1;j>=0;j--){
p[j]=0;//榪欓噷瑕佸厛鍒濆鍖栦負0錛屽湪涓嬩竴鏍?涓猻ize涓紝姣忕size鐨勬鐜囬兘瑕佸姞
for(t=0;t<6;t++)
if(j-size(t)>0)//榪欓噷涔熸槸瀹規(guī)槗鍑洪敊鐨勶紝runtime error鐨勮搗婧?br> p[j]+=p[j-size[t]]/6.0;//榪欓噷涔熸槸錛?.0錛岃屼笉鏄?錛岃鍏繪垚涔犳儻
#include<iostream>
#define MaxS 23*100//姣忔鏈澶氫涪鍒?00
int sizeA[6],sizeB[6];
double pA[MaxS],pB[MaxS];
int numDiceA,numDiceB;
void compute(double p[],int size[],int numSize)
{
int i,j,t;
for(i=1;i<numSize;i++)
for(j=MaxS-1;j>=0;j--){
p[j]=0;//important
for(t=0;t<6;t++)
if(j-size[t]>0)
p[j]+=p[j-size[t]]/6.0;
}
}
int main()
{
int i;
double ans,tmp[MaxS];
while(scanf("%d%d",&numDiceA,&numDiceB)!=EOF){
ans=0.0;
memset(tmp,0,sizeof(tmp));
memset(pA,0,sizeof(pA));
memset(pB,0,sizeof(pB));
for(i=0;i<6;i++){
scanf("%d",&sizeA[i]);
pA[sizeA[i]]+=1/6.0;}
for(i=0;i<6;i++){
scanf("%d",&sizeB[i]);
pB[sizeB[i]]+=1/6.0;}
compute(pA,sizeA,numDiceA);
compute(pB,sizeB,numDiceB);
for(i=1;i<MaxS;i++)
tmp[i]=tmp[i-1]+pB[i-1];
for(i=1;i<MaxS;i++)
ans+=pA[i]*tmp[i];
printf("%.9lf\n",ans);
}
return 0;
}
]]>