1 条题解

  • 0
    @ 2025-2-14 20:54:04

    C++ :

    #include<iostream>
    #include<string>
    #include<algorithm>
    using namespace std;
    const int N = 1005;
    int a[N],b[N],c[N],d[N];
    
    void zhuan(string s,int a[]){
    	fill(a,a+N,0);
    	a[0]=s.size();
    	for (int i=1; i<=a[0]; i++) a[i]=s[a[0]-i]-48;
    }
    
    void mul10(int a[]){
    	if (a[0]==1 && a[1]==0) return;
    	for (int i=a[0]; i>=1; i--) a[i+1]=a[i];
    	a[1]=0;
    	a[0]++;
    }
    
    bool isbig(int a[],int b[]){
    	if (a[0]!=b[0]) return a[0]>b[0];
    	for (int i=a[0]; i>=1; i--)
    		if (a[i]!=b[i]) return a[i]>b[i];
    	return true;
    }
    
    void sub(int a[],int b[]){
    	for (int i=1; i<=a[0]; i++){
    		if (a[i]<b[i]) a[i+1]--,a[i]+=10;
    		a[i]-=b[i];
    	}
    	while (a[a[0]]==0 && a[0]>1) a[0]--;
    }
    
    void div(int a[],int b[],int c[],int d[]){
    	fill(c,c+N,0);
    	fill(d,d+N,0);
    	c[0]=a[0];
    	d[0]=1;
    	for (int i=c[0]; i>=1; i--){
    		mul10(d);
    		d[1]=a[i];
    		while (isbig(d,b)){
    			sub(d,b);
    			c[i]++;
    		}
    	}
    	while (c[c[0]]==0 && c[0]>1) c[0]--;
    }
    
    void output(int a[]){
    	for (int i=a[0]; i>=1; i--) cout<<a[i];
    	cout<<endl;
    }
    
    int main(){
    	string s1,s2;
    	cin>>s1>>s2;
    	zhuan(s1,a); zhuan(s2,b);
    	div(a,b,c,d);
    	output(c);
    	output(d);
    	return 0;
    }
    

    Java :

    import java.math.BigDecimal;
    import java.util.Scanner;
    
    public class Main {
    	public static void main(String[] args) {
    		Scanner cin = new Scanner(System.in);
    		BigDecimal b1 = cin.nextBigDecimal();
    		BigDecimal b2 = cin.nextBigDecimal();
    		BigDecimal[] b3 = b1.divideAndRemainder(b2);
    		System.out.println(b3[0]);
    		System.out.println(b3[1]);
    	}
    }
    
    
    • 1

    信息

    ID
    512
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者