刚学C++萌新求助
查看原帖
刚学C++萌新求助
133206
Novice233楼主2020/5/31 22:21

这道题写了个高精度 但拿了零分 麻烦大神们看下 谢谢

#include<iostream>
#include<string>
#define SIZE 10005
using namespace std;
void converts(int *a,string s){
	int i,len=s.size();
	for(i=0;i<len;i++) a[i]=s[len-i-1]-'0';
	for(;i<SIZE;i++) a[i]=0;
}
void sub(int *a, int b) {
	for(int i=0; b || a[i]<0; b/=10, i++) {
		if((a[i]-=b%10)<0) {
			a[i+1]--;
			a[i]+=10;
		}
	}
} 
void mul(int *a, int b) {
	for(int i=0,c=0; i<SIZE; i++){ 
		c = c/10 + a[i]*b;
		a[i]=c%10;
	}
} 
void print(int *a){
	int i;
	for(i=SIZE-1;i>0;i--) if(a[i]>0) break;
	for(;i>=0;i--) cout<<a[i]; cout<<endl;
}
int x[SIZE];
int main() {
	string s;
	cin>>s;
	if(s=="0"){
		cout<<0;
		return 0;
	}
	converts(x,s);
	mul(x,2);
	sub(x,1);
	print(x);
	return 0;
}
2020/5/31 22:21
加载中...