이해를 돕기 위해 댓글을 쓰고 싶은데 도중에 계속 쓸 수는 없습니다. 왜 중간에 for 세 줄이 저렇게 쓰여 있나요?
给我你的怀抱2017-05-16 13:30:11
곱셈은 int 또는 심지어 long long을 초과하므로 높은 정밀도가 필요합니다.
높은 정밀도의 아이디어는 배열을 사용하여 숫자의 각 자릿수를 저장한 다음 인간의 곱셈 계산의 수직 곱셈 방법을 시뮬레이션하는 것입니다.
a가 낮은 값에서 높은 값으로 저장된다는 가정하에 길이가 숫자 x의 n배인 배열 a를 계산하는 방법을 고려할 수 있습니다(예: 숫자 12345, 배열은 a[1]=5,a[2]= 4,a[3]=3,a[4]=2,a[5]=1).
우선 다들 a[1]x%10인데 십의 자리는 (a[2]x+이전 자리의 캐리)%10
이어야 하는데 여기서 c는 캐리를 뜻하는데요. , f[j]는 j로 루프하기 전의 (i-1)!의 j번째 비트를 나타내고, j로 루프한 후에는 i!의 j번째 비트를 나타냅니다.