7、A除以B

题目描述

本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商数Q和余数R,使得A = B * Q + R成立。

输入描述:

输入在1行中依次给出A和B,中间以1空格分隔。

输出描述:

在1行中依次输出Q和R,中间以1空格分隔。

输入例子:

123456789050987654321 7

输出例子:

17636684150141093474 3
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Scanner;

/**
 * 数字字符串运算
 * @author fuyuw
 * 2018年8月20日 下午9:21:46
 * BigDecimal类数据的处理和"Non-terminating decimal expansion; no exact representable decimal result"问题
 */
public class Main {

	private static Scanner input = new Scanner(System.in);
	
	public static void main(String[] args) {
		String A = input.next();
		int B = input.nextInt();
		BigDecimal bigA = new BigDecimal(A);
		BigDecimal bigB = new BigDecimal(B);
		BigDecimal Q = bigA.divide(bigB, 0, RoundingMode.DOWN);
		BigDecimal R = bigA.subtract(bigB.multiply(Q));
		System.out.println(Q+" "+R);
		
	}
}

测试用例范围内最高耗时60ms,最大占用内存11080KB

【总结】

1、BigDecimal Q = bigA.divide(bigB);代码中如果写成这样会抛出Non-terminating decimal expansion; no exact representable decimal result异常,意思是【无法结束的除法表达式;没有精确的除结果】需要按小数模式处理。

2、BigDecimal底层原理是数字数组偏移量操作(具体没怎么细看)

3、BigDecimal 和String 一样具有对象不可变行,一旦赋值就不会再变

例如:

BigDecimal b= new BigDecimal("0.1");
b.add( new BigDecimal("0.9"));
System.out.println("b:" + b);// 输出0.1

 因此在进行每一步运算时,都会产生一个新的对象,所以在做加减乘除运算时千万要保存操作后的值

 

 

以下是多项式 $A$ 除以多项式 $B$ 的一般解决方法: ### 长除法 长除法是一种常用的多项式除法方法,类似于整数的长除法。 1. 将多项式 $A$ 和 $B$ 按照降幂排列。如果有缺项,用系数为 0 的项补齐。 2. 用多项式 $A$ 的最高次项除以多项式 $B$ 的最高次项,得到商的第一项。 3. 用商的第一项乘以多项式 $B$,然后从多项式 $A$ 中减去这个乘积,得到一个新的多项式。 4. 将新的多项式重复步骤 2 和 3,直到新的多项式的次数小于多项式 $B$ 的次数。 ### 综合除法 综合除法是一种简化的多项式除法方法,适用于除数为一次多项式 $x - c$ 的情况。 1. 确定除数 $x - c$ 中的 $c$ 值。 2. 将多项式 $A$ 的系数按照降幂排列,缺项用 0 补齐。 3. 将 $c$ 写在左边,然后将多项式 $A$ 的第一个系数写下来。 4. 用 $c$ 乘以第一个系数,将结果加到第二个系数上,得到新的第二个系数。 5. 重复步骤 4,直到所有系数都处理完毕。 6. 最后一行的数字就是商的系数,最后一个数字是余数。 ### 示例 设多项式 $A = 3x^3 + 2x^2 - x + 5$,多项式 $B = x - 1$。 #### 长除法 ```plaintext 3x^2 + 5x + 4 ____________________ x - 1 | 3x^3 + 2x^2 - x + 5 - (3x^3 - 3x^2) --------------- 5x^2 - x - (5x^2 - 5x) ------------- 4x + 5 - (4x - 4) --------- 9 ``` 所以商为 $3x^2 + 5x + 4$,余数为 9。 #### 综合除法 因为除数是 $x - 1$,所以 $c = 1$。 ```plaintext 1 | 3 2 -1 5 | 3 5 4 |------------- 3 5 4 9 ``` 商为 $3x^2 + 5x + 4$,余数为 9。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值