【求助】不知道为什么会WA,我看不出哪里有错,跪求大佬指点!

//求助!!!不知道为什么会WA,我看不出哪里有错,跪求大佬指点!!!
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
#include<math.h>
  
int main()
{  int T;  scanf("%d",&T);  while(T--)  {  int n,i,l=0;  int yf[101][2];  scanf("%d",&n);  while(n--)  {  char str[30];   scanf("%s",str);   if(strcmp(str,"Pop")==0)  {  if(l==0)   printf("Empty!\n");  else if(l==1)  {  printf("%d+i%d\n",yf[0][0],yf[0][1]);  l--;  printf("Empty!\n");  }  else  {  int max=0,modvalue,x;  for(i=0;i<l;i++)  {  modvalue=yf[i][0]*yf[i][0]+yf[i][1]*yf[i][1];  modvalue=sqrt(modvalue); //计算模值  if(modvalue>max)  {  max=modvalue;  x=i; //记录模值最大的虚数  }  }  printf("%d+i%d\n",yf[x][0],yf[x][1]);  for(i=x+1;i<l;i++)  {  yf[i-1][0]=yf[i][0];  yf[i-1][1]=yf[i][1];  }  l--;  printf("Size: %d\n",l);  }  }  else if(strcmp(str,"Insert")==0)  {  scanf("%d+i%d",&yf[l][0],&yf[l][1]);//输入实数和虚数,分别存储在yf[i][0]和yf[i][1]中 l++;  printf("Size: %d\n",l);  }  }  }  return 0;
}
	

题目描述


给你一个复数集合{Aj+i*Bj},保证Aj和Bj都是整数,初始为空集。

每次会给你如下两种操作中的一种:

1."Insert x+iy",其中x,y都是整数。表示在集合中加入一个复数 x+iy,同时输出此时集合的大小;

2."Pop"。如果集合为空集直接返回“Empty!”,如果有元素则以"x+iy"的形式显示集合中模值最大的复数,然后将该元素从集合中删除,之后在第二行显示操作之后的集合大小,如果为空集则显示“Empty!”。

输入格式

第一行只有一个数T,代表case数。0<=T<=10

每一组case:

第一行有一个整数n,表示这组case中一共有n条命令 0<n<=100

接下来n行每行有一个命令,命令如上所述

保证不会输入两个模值同样的元素,并保证实部虚部都大于0,小于1000。

输出格式

依照上述原则输出每一个命令

对应的输出

如果输入命令是Insert命令,则对应的输出占一行为集合大小;

如果输入命令是Pop命令,则对应的输出占一行或者两行,为模值最大的复数和集合大小。

请注意,输出集合大小的格式为"Size:空格x回车",x为集合大小

输入样例

1
5
Pop
Insert 1+i2
Insert 2+i3
Pop
Pop

输出样例

Empty!
Size: 1
Size: 2
2+i3
Size: 1
1+i2
Empty!

#C/C++#
全部评论

相关推荐

投递美团等公司10个岗位
点赞 评论 收藏
转发
投递美团等公司10个岗位
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务