帮我解一下,谢谢
查看原帖
帮我解一下,谢谢
1009550
user123456789楼主2024/1/8 23:15

题目描述
给定三个正整数,a,b,n。输出a÷b的值。

输入格式
三个整数(范围1到10000),分别表示a、b、n。

输出格式
一个精确到 n 位的小数

我的代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
	char a[101],b[101];
	int n;
	cin>>a>>b>>n;
	n+=1;
	int a1[301],b1=0,i,c[301],x,lena,lenb,l,o=0,a2=0;
	memset(a1,0,301);
	memset(c,0,301);
	lena=strlen(a)+n;
	lenb=strlen(b);
	int k=strlen(a)-strlen(b);
	for(i=0;i<lenb;i++){
		b1+=(b[i]-48)*pow(10,lenb-i-1);
	}
	for(i=n;i<lena;i++){
		a1[i]=a[lena-i-1]-48;
	}
	for(i=n;i<lena;i++){
		a2+=a1[i+lena-lenb-n]*pow(10,i-n);
	}
	int t=lena-1;
	while(t>=0){
		x=o*10;
		x+=a1[t];
		c[t]=x/b1;
		x-=c[t]*b1;
		o=x;
		l=0;
		while(x!=0){
			a[t+l]=x%10;
			x/=10;
			l+=1;
		}
		t-=1;
	}
	if(a2>=b1){
		t=1;
	}
	else{
		t=0;
	}
	l=0;
	for(o=lena-1;o>=0;o--){
		if(o==lena-lenb+t-k){
			break;
		}
		if(c[o]!=0||l){
			l=1;
			cout<<c[o];
		}
	}
	cout<<c[o]<<".";
	for(i=o-1;i>0;i--){
		if(i==1&&c[i]>=5){
			cout<<c[i]+1;
		}
		else{
			cout<<c[i];
		}
	}
	return 0;
}

救命啊!!!!!

2024/1/8 23:15
加载中...