gym 101412
A.
1 #include<bits/stdc++.h> 2 using namespace std; 3 int t,v[20005],vis[20005],p[20005]; 4 void sol() 5 { 6 for(int i=0;i<=200;i++)for(int j=0;j<=200;j++) 7 { 8 int x=i*i+j*j; 9 if(x>1&&x<20005&&!v[x])v[x]=1,p[++t]=x; 10 } 11 sort(p+1,p+t+1); 12 for(int i=1;i<=t;i++)for(int j=1;j<=t;j++)if(p[i]*p[j]<20005)vis[p[i]*p[j]]=1; 13 } 14 int main() 15 { 16 int tt;scanf("%d",&tt); 17 sol(); 18 while(tt--) 19 { 20 int m,n; 21 scanf("%d%d",&m,&n); 22 if(!vis[m*m+n*n])puts("P");else puts("C"); 23 } 24 return 0; 25 }
C.
1 #include<bits/stdc++.h> 2 using namespace std; 3 struct mat 4 { 5 int a[55][55]; 6 mat(){memset(a,0,sizeof(a));} 7 }; 8 int n,md,a,b,c,t; 9 mat mul1(mat a,mat b) 10 { 11 mat c; 12 for(int i=0;i<n;i++)for(int j=0;j<n;j++)c.a[i][j]=0; 13 for(int i=0;i<n;i++)for(int j=0;j<n;j++)for(int k=0;k<n;k++)c.a[i][j]=(c.a[i][j]+a.a[i][k]*b.a[k][j]%md)%md; 14 return c; 15 } 16 mat mul2(mat a,mat b) 17 { 18 mat c; 19 for(int i=0;i<n;i++)c.a[i][0]=0; 20 for(int i=0;i<n;i++)for(int k=0;k<n;k++)c.a[i][0]=(c.a[i][0]+a.a[i][k]*b.a[k][0]%md)%md; 21 return c; 22 } 23 int main() 24 { 25 while(scanf("%d%d%d%d%d%d",&n,&md,&a,&b,&c,&t)==6&&(n||md||a||b||c||t)) 26 { 27 mat mt; 28 for(int i=0;i<n;i++)scanf("%d",&mt.a[i][0]); 29 mat o; 30 for(int i=0;i<n;i++)o.a[i][i]=1; 31 mat p; 32 for(int i=0;i<n;i++) 33 { 34 if(i==0)p.a[i][0]=b,p.a[i][1]=c; 35 else if(i==n-1)p.a[i][i-1]=a,p.a[i][i]=b; 36 else 37 { 38 p.a[i][i-1]=a; 39 p.a[i][i]=b; 40 p.a[i][i+1]=c; 41 } 42 } 43 while(t) 44 { 45 if(t&1)o=mul1(o,p); 46 p=mul1(p,p); 47 t/=2; 48 } 49 mt=mul2(o,mt); 50 for(int i=0;i<n-1;i++)printf("%d ",mt.a[i][0]); 51 printf("%d",mt.a[n-1][0]); 52 puts(""); 53 } 54 return 0; 55 }
D.
1 #include<bits/stdc++.h> 2 using namespace std; 3 #define eps 5e-6 4 int n,rans[10]; 5 double ans[10],f[10][10]; 6 void init() 7 { 8 for(int i=1;i<=n+3;i++)scanf("%lf",ans+i); 9 } 10 bool gauss(int n,int m) 11 { 12 int i,j=1,k,l; 13 double res; 14 for(i=1;k=j,i<=m;i++,j++) 15 { 16 for(l=j;l<=n;l++)if(fabs(f[l][i])>fabs(f[k][i]))k=l; 17 for(l=i;l<=m+1;l++)swap(f[k][l],f[j][l]); 18 if(fabs(f[j][i])<eps) 19 { 20 j--; 21 continue; 22 } 23 for(l=j+1;l<=n;l++) 24 { 25 res=f[l][i]/f[j][i]; 26 for(k=i;k<=m+1;k++)f[l][k]-=f[j][k]*res; 27 } 28 } 29 for(i=1;i<=n;i++) 30 { 31 if(fabs(f[i][m+1])>eps) 32 { 33 for(j=1;j<=m;j++)if(fabs(f[i][j])>eps)break; 34 if(i>m)return false; 35 } 36 } 37 return true; 38 } 39 void work() 40 { 41 int i,j,k; 42 for(i=1;i<=n+3;i++) 43 { 44 memset(f,0,sizeof(f));memset(rans,0,sizeof(rans)); 45 for(j=1;j<=n+3;j++) 46 { 47 if(i==j)continue; 48 for(k=2,f[j][1]=1;k<=n+1;k++)f[j][k]=f[j][k-1]*(j-1); 49 f[j][k]=ans[j]; 50 } 51 if(gauss(n+3,n+1)) 52 { 53 printf("%d\n",i-1); 54 return; 55 } 56 } 57 } 58 int main() 59 { 60 while(scanf("%d",&n),n) 61 { 62 init(); 63 work(); 64 } 65 return 0; 66 }
F.
1 #include<bits/stdc++.h> 2 using namespace std; 3 int n,m,f[100005]; 4 long long d[100005]; 5 pair<int,int> fnd(int x) 6 { 7 if(f[x]==x) 8 { 9 d[x]=0; 10 return make_pair(x,0); 11 } 12 else 13 { 14 pair<int,int>p=fnd(f[x]); 15 f[x]=p.first; 16 d[x]+=p.second; 17 return make_pair(f[x],d[x]); 18 } 19 } 20 void uni(int x,int y,int z,int xx,int yy) 21 { 22 f[yy]=y; 23 d[yy]=-d[y]; 24 f[y]=xx; 25 d[y]=d[x]+z; 26 // cout<<d[x]<<d[y]<<endl; 27 } 28 int main() 29 { 30 while(scanf("%d%d",&n,&m)==2&&(n||m)) 31 { 32 for(int i=0;i<=n;i++)f[i]=i; 33 for(int i=0;i<=n;i++)d[i]=0; 34 while(m--) 35 { 36 char c; 37 getchar(); 38 c=getchar(); 39 if(c==‘!‘) 40 { 41 int x,y,z; 42 scanf("%d%d%d",&x,&y,&z); 43 pair<int,int>p=fnd(x); 44 int xx=p.first; 45 p=fnd(y); 46 int yy=p.first; 47 if(xx==yy)continue;else uni(x,y,z,xx,yy); 48 } 49 else 50 { 51 int x,y; 52 scanf("%d%d",&x,&y); 53 pair<int,int>p=fnd(x); 54 int xx=p.first; 55 p=fnd(y); 56 int yy=p.first; 57 if(xx==yy)printf("%d\n",d[y]-d[x]);else puts("UNKNOWN"); 58 } 59 } 60 } 61 return 0; 62 }