題目描述
本題要求計算A/B,其中A是不超過1000位的正整數,B是1位正整數。你需要輸出商數Q和餘數R,使得A = B * Q + R成立。
輸入描述:
輸入在1行中依次給出A和B,中間以1空格分隔。
輸出描述:
在1行中依次輸出Q和R,中間以1空格分隔。
輸入例子:
123456789050987654321 7
輸出例子:
17636684150141093474 3
package Test;
import java.util.Scanner;
public class Main{
public static void main(String [] args){
Scanner in=new Scanner(System.in);
String s=in.next();
int n=in.nextInt();
int R=0;
char chs[]=s.toCharArray();
StringBuffer sb=new StringBuffer();
for(int i=0;i<chs.length;i++){
int a=R*10+Integer.parseInt(String.valueOf(chs[i]));
sb.append(a/n);
R=a%n;
}
if(Integer.parseInt(String.valueOf(sb.charAt(0)))==0)
sb.delete(0, 1);
System.out.println(sb.toString()+" "+R);
}
}
這題看起來很簡單,但那個超長的數字我想了很久也不知道怎麼解決。然後就看了大佬的答案。
果然自己題還是做少了,沒有什麼數學思維。
在這道題中,基本類型是無法包含這個數字的(我曾看到測試數字長達數百位),所以只能將這個數字一個個拆開,但是我數學又不是很好,沒能想到下面這個方法。
StringBuffer sb=new StringBuffer();
for(int i=0;i<chs.length;i++){
int a=R*10+Integer.parseInt(String.valueOf(chs[i]));
sb.append(a/n);
R=a%n;
}
if(Integer.parseInt(String.valueOf(sb.charAt(0)))==0)
sb.delete(0, 1);
System.out.println(sb.toString()+" "+R);