질문드려요 (Gaussian Elimination with Modulo)

  • yeonzzg
    yeonzzg

    경우의 수 세는 문제에서 가우시안을 모듈로로 계산하는걸
    요구하는 문제를 접하게되어 질문드립니다..ㅜㅠ 한번도
    가우스 소거를 정수단위로 mod연산으로 해본적이 없는데..
    원래 가우스 소거랑 어떻게 다르게 해야하나요? 행 뺄셈에서
    하는 나눗셈 연산만 inv mod로 바꿔 계산해서 하면 될까요?

    *mod하는 값은 항상 소수입니다.


    11년 전
3개의 댓글이 있습니다.
  • Being
    Being

    네 맞습니다. 가우스 소거법은 어떤 중간 과정을 잡아도 그 linear system은 최초의 linear system과 동일한 해를 가지는 변형 과정의 연속이고, 여기서 문제가 되는 건 소위 '나눗셈 연산'인데 결국 나눗셈 연산의 목적은 계수를 1로 만들기 위한 것이므로, 곱셈에 대한 역원을 곱한 것이죠. 소수로 나눈 나머지를 고려하는 경우 곱셈에 대한 역원이 항상 존재하므로 문제가 되지 않습니다.


    11년 전 link
  • yeonzzg
    yeonzzg

    감사합니다! 혹시 det 부호만 판별하는 쉬운방법이 없을까요? mod소거가지고 det을 이용해서 경우의 수를 세야하는데 부호에 따라 det일지 MOD-det일지 정해야되서요 ㅠㅠ


    11년 전 link
  • yeonzzg
    yeonzzg

    http://apps.topcoder.com/forums/?module=Thread&threadID=685012&start=0&mc=8#1278579

    여기에 misof가 친절히 설명해놨네요.. row swap 한번마다 det 부호가 뒤바뀐답니다..


    11년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.