题目描述
给定三个正整数,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;
}
救命啊!!!!!