tree 와 q와 save의 자료형 문제로 보입니다.
구간곱을 저장하다보면 int 자료형의 범위를 넘어갈 것으로 보이네요
11505번 - 구간 곱 구하기
tree 와 q와 save의 자료형 문제로 보입니다.
구간곱을 저장하다보면 int 자료형의 범위를 넘어갈 것으로 보이네요
tree의 자료형만 문제가있네요.
temp = (tree[p] * tree[fr])DEVIDE;
이런부분들을 보면 tree[p]와 tree[fr] 같은 것들은 100000007로 나눈 나머지가 저장되니 100000006이 저장되어 있다고 칩시다.
그러면 tree[p] * tree[fr]이 연산되는 과정에서 int범위를 초과하기 때문에 오버플로우가 발생합니다.
이미 연산되는과정에서 오버플로우가 발생했기때문에 연산 후에 DEVIDE를 해주더라도 오답이 발생하구요
댓글을 작성하려면 로그인해야 합니다.
sanha93 3년 전
getFruit -> 구간 곱 구하는 함수
changeTree -> 값 변경하는 함수
makeTree -> 세그먼트 트리만드는 함수
입니다. changeTree는 리프부터 출발해서 올라가도록 만들었습니다.
0 이곳저곳에 넣어보기도 하고
changeTree 가 잘 작동하는지도 여러번 확인했고
트리에 1개, 2개 들어갈때도 확인을 해봤는데 못찾겠어요 ㅠㅠ