题目描述
一个字符串表示的超大数,除以int型整数,求其商和余数
思想
就像列竖式除法一样,商计算从高位到低位,不够则补0,持续向左移位,注意前部分去除0,保留最后一位
// numerator 被除数 denominator 除数 quotient 商 remainder 余数
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String numerator = scanner.next();
int denoinator = scanner.nextInt();
Object[] res = divide(numerator,denoinator);
System.out.println(res[0]);
System.out.println(res[1]);
}
public static Object[] divide(String numerator,int denoinator){
int q= 0,r = 0;
StringBuffer qBuf = new StringBuffer();
for(int i=0;i<numerator.length();i++){
int num = 10*r + Integer.valueOf(numerator.substring(i,i+1));
if(num>=denoinator){
// 够则上整除
qBuf.append(num / denoinator);
r = num % denoinator;
}else{
r = num;
// 不够则上零
qBuf.append(0);
}
}
String qstr = new String(qBuf);
int i=0;
// 注意细节,舍掉前部分的0,最后移位,不管是不是0,都会保留,故使用了-1
for(;i<qstr.length()-1;i++){
if(qstr.charAt(i)!='0'){
break;
}
}
return new Object[]{qstr.substring(i),r};
}
}
排版有些问题