50求助 在线等 急
查看原帖
50求助 在线等 急
1020317
xyc713713楼主2023/12/15 21:53

可怜的五十分

丑陋代码:

#include<bits/stdc++.h>
using namespace std;
string intToA(int n,int m){
    string ans="";
    do{	
        int t=n%m;
        if(t>=0&&t<=9)    
			ans+=(t+'0');
        else 
			ans+=(t+'A'-10);
        n/=m;
    }while(n);   
    reverse(ans.begin(),ans.end());
    return ans;    
}
int main(){
	char c1[2005];
	char c2[2005];
	int sum[2005];
	int c1i[2005];
	int c2i[2005];
	int b;
	cin>>b;
	scanf("%s %s",&c1,&c2);
//------------------------------------------------------------
	int c1long=strlen(c1);	//c1长度 
	int c2long=strlen(c2);	//c2长度
	//加法逢b进1
	int j=0;
	for(int i=0;i<c1long;i++)
	{
		if(c1[i]>='A' && c1[i]<='Z')
		{
			c1i[c1long-i-1]=c1[i]-'A'+10;
		}
		else
		{
			c1i[c1long-i-1]=c1[i]-'0';
		}
	}
	for(int i=0;i<c2long;i++)
	{
		if(c2[i]>='A' && c2[i]<='Z')
		{
			c2i[c2long-i-1]=c2[i]-'A'+10;
		}
		else
		{
			c2i[c2long-i-1]=c2[i]-'0';
		}
	}
//-------------------------------------------------------------
	for(int i=0;i<min(c1long,c2long);i++)
	{
		if(c1i[i]+c2i[i]>=b)
		{
			sum[i]=(c1i[i]+c2i[i])-b+j;
			j=1;
		}
		else
		{
			sum[i]=c1i[i]+c2i[i]+j;
			j=0;
		}
	}
	
	for(int i=min(c1long,c2long);i<max(c1long,c2long);i++)
	{
		
		if(c1long>c2long)
		{
			if(c1i[i]+j>=b)
			{
				sum[i]=c1i[i]+j-b;
				j=1;
			}
			else
			{
				sum[i]=c1i[i]+j;
				j=0;
			}
		}
		else
		{
			
			if(c2i[i]+j>=b)
			{
				sum[i]=c2i[i]+j-b;
				j=1;
			}
			else
			{
				sum[i]=c2i[i]+j;
				j=0;
			}
		}
	}
//-------------------------------------------------------------
	if(j>0)
	{
		sum[max(c1long,c2long)]=1;
		cout<<sum[max(c1long,c2long)];
	}
//-------------------------------------------------------------
	for(int i=max(c1long,c2long)-1;i>=0;i--)
	{
		//将数组转化为一个数字再把数字做进制转换
		cout<<intToA(sum[i],b);
	}
	return 0;
}

求助求助求助

下载了一个数据1 结果对了

已提交就错了

呜呜呜呜呜呜呜呜呜

2023/12/15 21:53
加载中...