코딩 퍼즐은 일반적으로 결과 mod (10^9 + 7)를 요구합니다. 설명 here을 참조하십시오.자바에서 많은 수의 mod (10^9 + 7) 수행 방법
매우 큰 2 개의 숫자가 있다고 가정합니다. 2 개의 큰 숫자 문자열을 말하십시오. 나는 그것들을 추가하고 mod (10^9 + 7)로 처리 된 결과를 필요로한다. 나는 어떻게 그것을 성취 할 수 있는가.
숫자가 작은 경우 코드는 다음과 같습니다.
Integer a = Integer.parseInt("123");
Integer b = Integer.parseInt("456");
Integer result = (a+b)%(10^9+7);
System.out.println("result"+result);
매우 큰 숫자를 사용하여 동일한 작업을 수행하는 방법은 무엇입니까?
Integer a = Integer.parseInt("123456474575756568568786786786786783453453");
Integer b = Integer.parseInt("456534543654564567567567567567564564456");
Integer result = (a+b)%(10^9+7);
System.out.println("result"+result);
이 경우 Integer 이외의 다른 값을 사용해야하며 "추가", "모듈러스"연산을 수행해야합니다.
이 경우에는 BidInteger, BigDecimal을 쉽게 사용할 수 없습니다. 제발 제안 해주세요.
는 "쉽게 BidInteger를 사용할 수 없습니다"- 무슨 일이야 문제? 그냥 일해야합니다. FWIW를 사용하면 숫자를 수동으로 파싱하고 이동하면서 모듈로 축소를 적용 할 수 있습니다. 그러면 숫자가 처음에는 커지지 않습니다. – harold
'10^9 + 7'은 ** 아닙니다 ** Java에서 9+ 7에 10을 쓰는 방법이 아닙니다. '^'는 XOR 연산자이며, 전원 연산자는 아닙니다. – Jesper
작업하고자하는 숫자가 예제에서 보여준 것과 거의 비슷하다면, 'double'과 'BigInteger'만이 그렇게 할 수있는 유일한 방법입니다. 'Integer'가 충분하지 않습니다. –