문제
C ++의 모듈러스에 관한 질문이 있습니다. 내가하려고했던 것은 매우 많은 숫자를 나누는 것이 었습니다. 예를 들어 M % 2, 여기서 M = 54,302,495,302,423. 그러나 컴파일에 갈 때 숫자는 int의 '긴'이라는 것을 말합니다. 그런 다음 두 배로 전환하면 동일한 오류 메시지를 반복합니다. 내가이 일을 할 수있는 방법이 있습니까? 도와 주셔서 감사합니다. 대단히 감사합니다.
다른 팁
숫자를 "긴 길이"(64 비트 적분 값)로 저장할 수 있습니다. 응용 프로그램이 멀티 스레드가 있고 32 비트 CPU에서 실행되면 읽기/쓸 때 스레드간에 동기화해야합니다. 읽기/쓰기에 2 클럭 사이클이 걸리는 값.
또는 a를 시도하십시오 Bignum 라이브러리
흥미로운 일을하고 싶다면 모듈로 2 만 수행한다면 가장 낮은 비트를 확인하고 답을 얻을 수 있습니다. Modulo 255까지 만 수행하는 경우 가장 낮은 8 (부호없는 Char) 비트를 가져 와서 작업을 수행 할 수 있습니다. Modulo 65535까지 만 수행하는 경우 가장 낮은 16 비트 (서명되지 않은 짧음)를 가져 와서 작업을 수행 할 수 있습니다.
INT는 –2,147,483,648에서 2,147,483,647입니다. 확인하다http://msdn.microsoft.com/en-us/library/s3f49ktz(vs.71).aspx 데이터 유형 범위의 경우. 나는 긴 시간을 추천합니다.
힌트 : 링크 된 목록을 사용하십시오. 숫자를 동적으로 숫자 그룹으로 저장하십시오. 예를 들어 :
112233445566778899001122 => 11223344 55667788 99001122
이제 개별 장치를 고려하고 왼쪽에서 오른쪽으로 시작하십시오. 미리 알림을 찾고 다음 그룹에 추가하고 계속하십시오.
이제 구현은 매우 쉽습니다 :)
편집하다:
112233445566778899001122/6 => 11223344 55667788 99001122/6
11223344/6 =>2
2*100000000 + 55667788 = 255667788
255667788/6 => 0
0*100000000 + 99001122 = 99001122
99001122/6=>0
So the reminder is 0.
조작 후 개별 장치는 지원할 수있는 최대 범위에 속해 있어야합니다.