Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
51
Task/Long-multiplication/Java/long-multiplication-1.java
Normal file
51
Task/Long-multiplication/Java/long-multiplication-1.java
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
public class LongMult {
|
||||
|
||||
private static byte[] stringToDigits(String num) {
|
||||
byte[] result = new byte[num.length()];
|
||||
for (int i = 0; i < num.length(); i++) {
|
||||
char c = num.charAt(i);
|
||||
if (c < '0' || c > '9') {
|
||||
throw new IllegalArgumentException("Invalid digit " + c
|
||||
+ " found at position " + i);
|
||||
}
|
||||
result[num.length() - 1 - i] = (byte) (c - '0');
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public static String longMult(String num1, String num2) {
|
||||
byte[] left = stringToDigits(num1);
|
||||
byte[] right = stringToDigits(num2);
|
||||
byte[] result = new byte[left.length + right.length];
|
||||
for (int rightPos = 0; rightPos < right.length; rightPos++) {
|
||||
byte rightDigit = right[rightPos];
|
||||
byte temp = 0;
|
||||
for (int leftPos = 0; leftPos < left.length; leftPos++) {
|
||||
temp += result[leftPos + rightPos];
|
||||
temp += rightDigit * left[leftPos];
|
||||
result[leftPos + rightPos] = (byte) (temp % 10);
|
||||
temp /= 10;
|
||||
}
|
||||
int destPos = rightPos + left.length;
|
||||
while (temp != 0) {
|
||||
temp += result[destPos] & 0xFFFFFFFFL;
|
||||
result[destPos] = (byte) (temp % 10);
|
||||
temp /= 10;
|
||||
destPos++;
|
||||
}
|
||||
}
|
||||
StringBuilder stringResultBuilder = new StringBuilder(result.length);
|
||||
for (int i = result.length - 1; i >= 0; i--) {
|
||||
byte digit = result[i];
|
||||
if (digit != 0 || stringResultBuilder.length() > 0) {
|
||||
stringResultBuilder.append((char) (digit + '0'));
|
||||
}
|
||||
}
|
||||
return stringResultBuilder.toString();
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
System.out.println(longMult("18446744073709551616",
|
||||
"18446744073709551616"));
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue