java-1017 A除以B
阿新 • • 發佈:2018-12-30
本題要求計算 A/B,其中 A 是不超過 1000 位的正整數,B 是 1 位正整數。你需要輸出商數 Q 和餘數 R,使得 A=B×Q+R 成立。
輸入格式:
輸入在一行中依次給出 A 和 B,中間以 1 空格分隔。
輸出格式:
在一行中依次輸出 Q 和 R,中間以 1 空格分隔。
輸入樣例:
123456789050987654321 7
輸出樣例:
17636684150141093474 3
老樣子,獲取資料先:
public static String[] getData() throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
return bufferedReader.readLine().split(" +");
}
獲取成為一個長度為2的String陣列
之後我們進行處理:我們將獲取到的資料進一步的轉化為被除數和除數。然後...進行某種處理/xyx
public static void main() throws IOException { String[] targetString = getData();//獲取兩個數 char[] op1 = targetString[0].toCharArray();//被除數 char op2 = targetString[1].toCharArray()[0];//除數 System.out.println(culculate(op1, op2)); }
某種處理程式碼:
public static String culculate(char[] op1, char op2) { StringBuilder stringBuilder = new StringBuilder();//商 int remainder = 0; int iop2 = convertCharToInt(op2); for (int i = 0 ; i < op1.length ; i ++) {//因為第一個數已經算過了 remainder = remainder * 10 + convertCharToInt(op1[i]);//計算本次運算元 stringBuilder.append(remainder / iop2); remainder =remainder % convertCharToInt(op2); } return stringBuilder.charAt(0) == '0' && stringBuilder.length() > 1 ? stringBuilder.substring(1) + " " + remainder : stringBuilder.toString() + " " + remainder; } public static int convertCharToInt(char c) { return c - 48; } public static char convertIntToChar(int i) { return (char) (i + 48); }
沒什麼好說的,基本上就是在仿照除法的豎式運算...注意一下中間的char向int轉化和最後對於第一個數字出現0的處理就行了。