B进制星球日记

阅读: 评论:0

B进制星球日记

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;}

本文发布于:2024-01-27 22:38:39,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17063663203067.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:星球   日记
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23