题目描述
本题要求计算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.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
BigInteger a=in.nextBigInteger();
BigInteger b=in.nextBigInteger();
in.close();
System.out.print(a.divide(b)+" ");
System.out.print(a.mod(b));
}
}
大佬的代码:
import java.util.Scanner;
/**
* Created by lang on 2016/1/18.
*/
public class Main {
int R = 0;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String A = sc.next();
int B = sc.nextInt();
bigDiv(A, B);
}
static void bigDiv(String A,int B){
StringBuffer Q = new StringBuffer();
char[] cA = A.toCharArray();
int r = 0;
int a = 0;
for (int i = 0; i < cA.length; i++) {
a = r * 10 + Integer.parseInt(String.valueOf(cA[i]));
Q.append(a/B);
r = a % B;
}
while (Q.charAt(0)=='0')Q.delete(0,1);
System.out.println(Q.toString()+" "+r);
}
}
另一位:
import
java.util.Scanner;
public
class
Main {
public
static
void
main(String[] args) {
Scanner in =
new
Scanner(System.in);
try
{
String a = in.next();
int
b = in.nextInt();
int
s =
0
;
for
(
int
i =
0
; i < a.length(); i++) {
int
n = a.charAt(i) -
'0'
;
s = s + n;
if
(s >= b) {
System.out.print(s / b);
}
else
{
if
(i !=
0
) {
System.out.print(
0
);
}
}
s = s % b *
10
;
}
System.out.println(
" "
+ s /
10
);
}
finally
{
in.close();
}
}
}