일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- TimeSeries
- socket.io
- LTSF
- 불법마약특별단속 #부산지방경찰청
- de
- 도커로 깃블로그 만들기
- AI
- pandas
- 프로바이오틱스
- DataProcessing
- express
- NLinear
- MPRO
- DL
- mlflow
- 제발쉽게좀가르치자
- transformer
- HY7714
- 흥미붙이기
- 벨만방정식
- RL
- DLInear
- 강화학습
- 강화학습으로주식하기
- ML
- node.js
- 오토트레이딩
- 엠프로
- YOLO
- 프레딧
- Today
- Total
상황파악
Wechall - hi 본문
위 글을 정리하자면 예시 사이트가 있고 한 사람이 접속할 때 마다 hi라는 메시지를 전송하는데 누적 접속인원이 0xfffbadc0ded명 일 때 메시지 전송횟수를 구하는 문제입니다.
아래 추가적인 내용은 1분에 1명씩 접속하는 가정에 한번 보낸 사람한테도 누적으로 보낸다는 말입니다.
문제 이해부터 어렵습니다.
0xfffbadc0ded는 10진수로 변경하면 17591026060781 입니다. 대략 17조 정도입니다. 차후 설명을 위해 max라는 변수명으로 칭하겠습니다.
처음에 별 생각없이 for문으로 sum += i 반복문을 진행했는데 하루종일 걸려도 끝날 기미가 보이지 않길래 예전 수학시간에 배운 기억을 더듬어 봤습니다.
1씩 증가하는 수들을 합을 구하는 문제니까 등차수열 합을 사용하면 됩니다.
S(n) = n * (n+1) / 2 라는 공식인데 첫 항이 1이 아니라 2부터니까 다른 공식을 사용해 봅니다.
S(n) = n * {2a + (n-1)*d} / 2 공식을 사용합니다. 이는 위 공식과 동일한 식입니다.
첫 항 2 부터 max까지 덧셈을 하면 a는 2, d는 1이 되어 식을 정리하면 S(n) = max * {4 + max - 1} / 2 가 됩니다.
하지만 이 식을 그냥 코드로 돌리게 되면 1.~e+26 처럼 출력이 되는데 이를 해결하기 위한 사이트를 찾게되었습니다.
위 사이트는 큰 값을 계산해주는 사이트라고 합니다.
해당 값을 입력해주면 10진수 값으로 변경하여 출력시켜 줍니다.
이번 문제는 단순 수학공식을 활용하여 해결할 수 있었습니다.
'Wargame > Wechall' 카테고리의 다른 글
Wechall - PHP My Admin (0) | 2020.02.06 |
---|---|
Wechall - PHP 0817 (0) | 2020.01.08 |
Wechall - Training : MySQL II (0) | 2019.12.31 |
Wechall - Training : MySQL I (0) | 2019.12.31 |
Wechall - Training: Programming 1 정리 (0) | 2019.12.11 |