【高精度】Bバンドプラネット

【高精度】Bバンドプラネット

タイトル

トピックの背景

Aryのタイトルだけでなく、電卓~~

タイトル説明

ある日、小さなZの宇宙船は、美しい惑星に飛ぶという。歴史的な理由のために、技術は非常によく、この美しい惑星、B(2 <= B <= 36)バイナリカウンタの遊星普及上に現像されません。おいしい食べ物と地球上の人々が、見返りに、小さなZを務め、それらに2進加算器の計算を完了することができ、小さなZ Bを送りたいです。Zは今少しバイナリ加算器Bプログラムを達成するために用意し、あなたが彼を助けることができると思います。

入力形式

3行1行目:10進数16進数Bを示し 行2-3:各ラインの正の整数小数B。すべての数は、{0,1,2,3,4,5,6,7,8,9、A、B ......}、各桁の長さ<= 2000に属します。

出力フォーマット

進数のB、2つの入力の数を表します。

サンプル入力と出力

入力#1レプリケーション
。4
123
321
の出力は、#1コピー
1110
説明/プロンプト
進計算を

分析

また、この問題は非常に正確なタイトルです。
最初の読み出しデータ列(データ番号と文字があるため)で、その後(A、B [] [付き]ここで、)アレイに記憶された対応する数に変換
し、高い精度で行わ添加。
いくつかの点**注:**また、高精度の加算器を毎日ことに留意されたい
nができ、次に繰り越す最上位ビットの小数表現よりも大きい場合に1
最上位ビットが0である防ぐために、2を
3出力、背面から注目されます対応にし、また10のより大きい文字

具体的にコードを見て。

コード

#include<iostream>

using namespace std;

const int maxn = 20000;
int n;
string x,y;
int a[maxn],b[maxn],c[maxn];

int main(){
	cin>>n;
	cin>>x>>y;
	//读数据,存放 
	int lena = x.size();
	int lenb = y.size();
	for(int i=0;i<lena;i++){
		if(x[i] >='0' &&x[i] <='9')		a[lena -i] = x[i] -'0';
		else if(x[i] >='A' && n>=10) a[lena-i] = x[i] -'A'+10; 
	}
	for(int i=0;i<lenb;i++){
		if(y[i] >='0' &&y[i] <='9')		b[lenb -i] = y[i] -'0';
		else if(y[i] >='A' && n>=10) b[lenb-i] = y[i] -'A'+10; 
	}
//ps:下面换成这样写也可以 
//int lenc=0;
//	int cf=0;
//	while(lenc <=lena || lenc <=lenb){
//		lenc++;
//		c[lenc] = a[lenc] +b[lenc]+cf;
//		cf =c[lenc]/n;
//		c[lenc] %= n;
//	}
//	while(c[lenc]==0 && lenc >1){
//		lenc--;
//	}
//	for(int i=lenc;i>=1;i--){
//		if(c[i]>=10){
//			cout<<(char)(c[i] +'A' -10);
//		}else{
//			cout<<c[i];
//		}
//	} 	

//取最长长度,做高精加法 
	int maxlen = max(lena,lenb); 
	for(int i=1;i<=maxlen;i++){
		c[i] += a[i] + b[i];
		c[i+1] = c[i]/n;
		c[i] %= n;
	}
	maxlen++;
	//如果最高位大于n进制,表示可以向前再进位 
	while(c[maxlen] >=n){
		c[maxlen+1] = c[maxlen]/n;
		c[maxlen] %= n;
		maxlen++; 
	}
	//以防 最高位是 0的情况 
	while(c[maxlen]==0 && maxlen >1){
		maxlen--;
	}
	//输出,注意是从后往前,然后大于10还要转换成对应字母 
	for(int i=maxlen;i>=1;i--){
		if(c[i]>=10){
			cout<<(char)(c[i] +'A' -10);
		}else{
			cout<<c[i];
		}
	} 
	
	return 0;
}
公開された75元の記事 ウォンの賞賛1 ビュー3632

おすすめ

転載: blog.csdn.net/A793488316/article/details/104832689