猫史档案馆


[求助]C++高精度运算怎么用(QwQ)

用户:Adorable_GJSAdorable_GJS查看:2 回复:2 评论:2 创建时间:2023-07-09T20:01:55


#include<bits/stdc++.h>
using namespace std;
int a[110] = {0},b[110] = {0},c[110] = {0};
int main(){
//	freopen("gjadd.in","r",stdin);
//	freopen("gjadd.out","w",stdout);
	string str1,str2;
	int yushu = 0,jinwei = 0, cc = 0;
	cin>>str1>>str2;
	int lena = str1.length(),lenb = str2.length();
	for(int i = 0;i<lena;i++) a[i] = str1[lena-i]-'0';
	for(int i = 0;i<lenb;i++) b[i] = str2[lenb-i]-'0';
	for(int i = 0;i<max(lena,lenb);i++){
		c[i] = (a[i]+b[i]+jinwei)%10;
		if(a[i]+b[i]+jinwei>=10) jinwei=1;
		else jinwei = 0;
	}
	if(jinwei == 1)
	{
		c[max(lena,lenb)]+=1;
		cc = 1;
	}
	for(int i = 0;i<max(lena,lenb)+cc;i++)
		cout<<c[i];
	return 0;
}

 

求大佬指点帮助!!!感谢!!!emotion_编程猫_紧张

 


回复

上一页1 页 / 共 1下一页
happy_chickenhappy_chicken

你用洛谷吗?

这个是正常的高精。

你后面判断写的太麻烦了。

你最好最好去个首0

你能回车就回车,写道一堆不好检查

#include <bits/stdc++.h>
using namespace std;

int main() {
	string str1, str2;
	cin >> str1 >> str2;
	int l1 = str1.size(), l2 = str2.size(), j = 0, a[205] = {}, b[205] = {}, z[405] = {}, jw = 0;
	for (int i = 1; i <= l1; i++)
		a[i] = str1[l1 - i] - '0';
	for (int i = 1; i <= l2; i++)
		b[i] = str2[l2 - i] - '0';
	int l3 = l1 > l2 ? l1 : l2;
	for (int i = 1; i <= l3; i++) {
		z[i] = a[i] + b[i] + jw;
		jw = z[i] / 10;
		z[i] %= 10;
	}
	jw ? l3++, z[l3] = jw : l3 = l3;
	while (z[l3] == 0 && l3 > 1)
		l3--;
	for (int i = l3; i >= 1; i--)
		cout << z[i];
	return 0;
}

点赞0


评论


happy_chickenhappy_chicken

你高精哪里出错了?

点赞0


评论