-
题意
题目大意:假设1代表圆形,2代表正三角形,3代表正方形,那么如例一所示2 1 3就代表正三角形内接圆形,同时内接圆的内部再内接正方形。那么现在所需要求的就是通过不断内接图形最终有多少个交点,如果在这个过程中内接的图形与之有边重合则 Infinite
-
分析
我又WA了,,,嘤嘤嘤。
自己只画了两个图形的内接的情况。没想到三个图形如果有 3 1 2的情况,是会有重合的点的。
-
代码
依旧是,又臭又长
int num[105];
int w[4][4];
int main()
{
int n;
scanf("%d",&n);
memset(w,0,sizeof(inf));
w[2][1]=3;w[2][3]=0;
w[1][3]=4;w[1][2]=3;
w[3][1]=4;w[3][2]=0;
for(int i=1;i<=n;i++)
{
scanf("%d",&num[i]);
}
int ans=0;
for(int i=2;i<=n;i++)
{
int a=num[i-1];
int b=num[i];
if(w[a][b]==0)
{
cout<<"Infinite"<<endl;
return 0;
}
ans+=w[a][b];
}
for(int i=3;i<=n;i++)
{
if(num[i-2]==3 && num[i-1]==1 && num[i]==2)
ans--;
}
cout<<"Finite"<<endl;
cout<<ans<<endl;
return 0;
}