이렇게 짜면
외않되?
만약 N * (N + 1)의 값이 int형의 최대값을 넘어갈경우 오버플로우가 발생해서 답이 다르게나올수있음 주의
signed int 기준으로 대략 21억 7천만 뭐시깽이임.
반복문 사용하면 그런 문제가 발생 안해? 똑같이 sum값도 21억 어쩌고 넘어가면 오버플로우 나오는거 아닌가
그렇지. Sum이 결국 21억을 넘어간다면 어떻게하든 오류가 나. 그런데 차이점은 sum이 10억 3천만 어쩌구가 넘을경우에 대해 오버플로우가 난다는점이야.
N이 50000일때 각 경우가 어떻게되는지 직접 해보셈
그럼 (n / 2) * ((n + 1) / 2)로 해주면 되는 거 아니나 - dc App
솔직히 왜그런지 이해는 못하겠네...
사칙연산이 앞에서부터 해서 곱하기 먼저 해버려서 오버플로우 발생하는건가
180.71 / 그거 정수안나옴
그럼 나누기 먼저 하게 바궈주면 안나는거지?
맞아. 곱하기먼저 해서 오버플로우가 나버리는거야
나눗셈시 주의할점은 n을 2로 나누고 n+1을 곱한다 쳤을때, n이 홀수면 정수나눗셈을 하기때문에 답이 틀릴수있어! 이에 주의해서 코딩하면 됨.
홀짝 판별하는 if문 없이 구현 가능한데 궁금하라고 안가르쳐줌
그나저나 최대가 21억 4천7백만 머시기였나? 뭐 암튼.
http://www.toptop777.com/
17번// 그냥 for문으로 다 더해도 n이 (20억)^0.5 넘어가면 일일이 for문으로 더해도 결과는 어차피 20억 넘어가는 거 아님???ㅇㅅㅇ
만약 N * (N + 1)의 값이 int형의 최대값을 넘어갈경우 오버플로우가 발생해서 답이 다르게나올수있음 주의
signed int 기준으로 대략 21억 7천만 뭐시깽이임.
반복문 사용하면 그런 문제가 발생 안해? 똑같이 sum값도 21억 어쩌고 넘어가면 오버플로우 나오는거 아닌가
그렇지. Sum이 결국 21억을 넘어간다면 어떻게하든 오류가 나. 그런데 차이점은 sum이 10억 3천만 어쩌구가 넘을경우에 대해 오버플로우가 난다는점이야.
N이 50000일때 각 경우가 어떻게되는지 직접 해보셈
그럼 (n / 2) * ((n + 1) / 2)로 해주면 되는 거 아니나 - dc App
솔직히 왜그런지 이해는 못하겠네...
사칙연산이 앞에서부터 해서 곱하기 먼저 해버려서 오버플로우 발생하는건가
180.71 / 그거 정수안나옴
그럼 나누기 먼저 하게 바궈주면 안나는거지?
맞아. 곱하기먼저 해서 오버플로우가 나버리는거야
나눗셈시 주의할점은 n을 2로 나누고 n+1을 곱한다 쳤을때, n이 홀수면 정수나눗셈을 하기때문에 답이 틀릴수있어! 이에 주의해서 코딩하면 됨.
홀짝 판별하는 if문 없이 구현 가능한데 궁금하라고 안가르쳐줌
그나저나 최대가 21억 4천7백만 머시기였나? 뭐 암튼.
http://www.toptop777.com/
17번// 그냥 for문으로 다 더해도 n이 (20억)^0.5 넘어가면 일일이 for문으로 더해도 결과는 어차피 20억 넘어가는 거 아님???ㅇㅅㅇ
http://www.toptop777.com/