求大佬
  • 板块学术版
  • 楼主月下纯春
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/10/14 23:40
  • 上次更新2024/4/6 17:06:16
查看原帖
求大佬
52153
月下纯春楼主2023/10/14 23:40

给定三角形的三条边长,让你区分出是那种三角形形状(直角、等边、等腰、普通、等腰直角)

等边请输出:dengbian 等腰(非等腰直角)输出:dengyao 直角(非等腰直角)输出:zhijao 等腰直角输出:dengyaozhijiao 普通输出:putong 不是三角形输出:error 输入n+1行,第一行是测试个数,其后每行三个整数a,b,c(long long范围内) 输出n行按照上述要求 输入样例 5 1 1 1 2 2 1 6 7 8 1 2 3 3 4 5 输出样例 dengbian dengyao putong error zhijao

请问这道题我用高精度算完之后怎样把数值转换成能比较大小的int类型

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
#define maxn 100005

char* cf(char* num1, char* num2)
{
    int la,lb,lc,i,j;
    int a[maxn]={0};
    int b[maxn]={0};
    int c[maxn]={0};
    la=strlen(num1);
    lb=strlen(num2);
    for(i=0;i<la;i++)
    {
        a[la-i-1]=num1[i]-'0';
    }
    for(i=0;i<lb;i++)
    {
        b[lb-i-1]=num2[i]-'0';
    }
    lc=la+lb;
    for(i=0;i<la;i++)
    {
        for(j=0;j<lb;j++)
        {
            c[i+j]+=a[i]*b[j];
            c[i+j+1]+=c[i+j]/10;
            c[i+j]%=10;
        }
    }
    while(c[lc]==0&&lc>0)lc--;
    char *re=(char *)malloc(sizeof(char)*(lc+2));
    for(i=lc;i>=0;i--){
        re[lc-i]=c[i]+'0';
    }
    re[lc+1]=0;
    return re;
}

long long jf(char a1[maxn],char b1[maxn],char c1[maxn])
{
	char ans[maxn],d[maxn];
	int a[maxn],b[maxn],c[maxn],e[maxn],la,lb,lc,x=0,i,s=0;
	la=strlen(a1);
	lb=strlen(b1);
    for(i=0;i<=la-1;i++) a[la-i]=a1[i]-48;
    for(i=0;i<=lb-1;i++) b[lb-i]=b1[i]-48;             
	lc=1;
	while(lc<=la||lc<=lb)
	{
		c[lc]=a[lc]+b[lc]+x;
		x=c[lc]/10;
		c[lc]%=10;
		lc++;
	}
	c[lc]=x;
	if(c[lc]==0) lc--;
	for(i=lc;i>=1;i--) 
	{
		e[lc-i]=c[i];
	}
	for(i=0;i<lc;i++)
	{
		d[i] = char(e[i] + '0');
		
	}
	
	if(strlen(d)<strlen(c1))
        return 0;
    if(strlen(d)>strlen (c1))
        return 1;
    else
	{
        for(int i=strlen(d);i>=0;i--)
        {
        	if(d[i]<c1[i]) return 0;
		    else if(i=0&&d[i]==c[i]) return 2;
		}
        
    }
    return 1;
}





int main()
{
	int n;
	long long a,b,c,t=0;
	char a1[maxn],b1[maxn],c1[maxn];
	scanf("%d",&n);
	for(int i=0;i<n;i++)
	{
		scanf("%lld%lld%lld",&a,&b,&c);
		//s1=strlen(num1);
		//s2=strlen(num2);
		
		if(b<a) 
		{
			t=b;
			b=a;
			a=t;
		}
		if(c<a)
		{
			t=c;
			c=a;
			a=t;
		}
		if(c<b)
		{
			t=c;
			c=b;
			b=t;
		}
		sprintf(a1,"%lld",a);
		sprintf(b1,"%lld",b);
		sprintf(c1,"%lld",c);
		char* a2=cf(a1,a1);
		char* b2=cf(b1,b1);
		char* c2=cf(c1,c1);
		
	
		//long long a3=atol(a2);
		//long long b3=atol(b2);
		long long c3=atol(c2);
		//printf("%lld %lld %lld",a,b,c);
		if(jf(a2,b2,c2)==0) printf("error");
		else if(a==b&&b==c&&c==a) printf("dengbian");
		else if((a==b||b==c)&&jf(a2,b2,c2)!=2) printf("dengyao");
		else if((a==b||b==c)&&jf(a2,b2,c2)==2) printf("dengyaozhijiao");
		else if(jf(a2,b2,c2)==2) printf("zhijao");
		else printf("putong");
	}
}
2023/10/14 23:40
加载中...