码迷,mamicode.com
首页 > 其他好文 > 详细

gym 101412

时间:2018-02-21 23:35:49      阅读:246      评论:0      收藏:0      [点我收藏+]

标签:get   main   post   name   def   lap   img   print   none   

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 }
View Code

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 }
View Code

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 }
View Code

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 }
View Code

 

gym 101412

标签:get   main   post   name   def   lap   img   print   none   

原文地址:https://www.cnblogs.com/xyleo/p/8457764.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!