B进制星球日记

今天写了B进制星球,在两次10分之后AC了,不容易啊~~~

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char a1[2100],c1[2100];
int a[2100],c[2100],w[2100];
int main()
{
  int b,la,lc,j,x; 
  scanf("%d",&b);
  cin>>a1;
  cin>>c1;
  la=strlen(a1);   lc=strlen(c1); 
  for(int i=0;i<la;i++)
  if(b>10&&a1[i]>='A')
   a[la-i]=a1[i]-'A'+10;
   else a[la-i]=a1[i]-'0';
   
   for(int i=0;i<lc;i++)
  if(b>10&&c1[i]>='A')
   c[lc-i]=c1[i]-'A'+10;
   else c[lc-i]=c1[i]-'0';
   x=0;j=0;
   
   while(x<=lc||x<=la){
   x++;
   w[x]=a[x]+c[x]+j;
   j=w[x]/b;   w[x]=w[x]%b;
   }
   while (w[x]==0&&x>1) x--; 
  for(int i=x;i>=1;i--){
  if(w[i]<10) cout<<w[i];
  else cout<<(char)(w[i]+'A'-10);}
  return 0;
}
//if(x==2&&w[x]==0)
	//cout<<0;
	//else{
    //while(w[x]==0)  
       //x--; 
   //自己的想法 
   //for(int i=0;i<lc;i++)
   //if(b>10&&c1[i]>='A')   
   //c[la-i]=c1[i]-'A'+10;
   //else c[la-i]=c1[i]-'0';

先解释一下吼

    第一次是因为忘记了第二个加数的输出,去前导零也有问题

    第二次修复了一些问题,学习了题解中区前导零的方法,进位照常

以后可以多打空格,好检查,但要保证代码简洁

题解代码

#include<iostream>
#include<cstring>
using namespace std;
int a[2010],b[2010],c[2018],i,y,x,l1,l2,z;
char n[2001],m[2001];
int main(){
    cin>>z;
    cin>>n; cin>>m;
    l1=strlen(n); l2=strlen(m);
    for (i=0; i<l1; i++)
      if (z>10&&n[i]>='A') a[l1-i]=n[i]-'A'+10;//字符串逆序存储
      else a[l1-i]=n[i]-'0';//遇到字母转换成数字
    for (i=0; i<l2; i++)
      if (z>10&&m[i]>='A') b[l2-i]=m[i]-'A'+10;//同上
      else b[l2-i]=m[i]-'0';
    while (x<=l1||x<=l2){//高精加
        x++;//x是位数指针
        c[x]=y+a[x]+b[x]; //y是进位
        y=c[x]/z; c[x]%=z;//在z禁止下逢z进1
    }
    while (c[x]==0&&x>1) x--; //去除前导零
    for (i=x; i>=1; i--){
        if (c[i]<10) cout<<c[i];
        else cout<<(char)(c[i]+'A'-10);//z>10是要输出大写字母,类型要转换成char,否则会输出ASCII码
    }
    return 0;}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值