A除以B (20)
基本思想是手算除法的过程,
比如100/2: 等价于1/2, 商为0, 余数为1, 商为0的情况下不能输输出,然后余数和下一位: 即0, 组合为1*10+0=10, 就变成10/2, 商为5余数为0,此时输出商数.
然后0和下一位0组合为0*10+0=0, 0/2余数为0, 此时运算完毕。
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String A = sc.next();//被除数
int B = sc.nextInt();//除数
StringBuilder sb = new StringBuilder();//存储商的字符串
int R = 0;//余数
int curNum = A.charAt(0) - '0';
if(curNum >= B){//必须要被除数大于除数才能除
sb.append(curNum / B);
}
for(int i=1; i<A.length(); i++){
R = curNum % B;
curNum = R * 10 + A.charAt(i) - '0';//余数和下一位组合
sb.append(curNum / B);
}
R = curNum % B;//余数
if(A.length() == 1 && A.charAt(0) - '0' < B){//被除数<=9,并且被除数小于除数,则商为0, 余数为被除数本身
System.out.println( 0 + " " + (A.charAt(0) - '0'));
}else{
System.out.println(sb.toString() + " "+ R);
}
}
}

查看10道真题和解析