int mp[2000001]; for (int i: ar) ++mp[i]; for (int i = 0; i < 2000001; ++i) if (!mp[i]) cout << i << ' ';
익명(14.33)2021-11-03 15:23
bool vis[N] 만들어놓고 배열 다 돌면서 방문했으면 false로 바꿔준다음 vis[N] 돌면서 true 다 출력
Glacier(yoooo9)2021-11-03 17:04
memo할수있으면 그게 제일 직관적이고 만약 메모리를 O(1)로 써야해서 메모를 못한다면 주어진 숫자 다 더하고 N(N+1)/2에서 더한값을 빼는 방법이 있음
ㅁ(119.202)2021-11-03 17:33
답글
아 그러네
ㅁ(119.202)2021-11-03 17:50
1+2+...n = n(n+1)/2, 1^2 + 2^2 + ... + n^2 = n(n+1)(2n+1)/6 이용하면 빠진 두 수를 u, v라 할 때 u+v, u^2+v^2 알 수 있고 여기서 uv 구할 수 있음. 이차방정식 t^2-(u+v)t+uv=0의 두 근이 u, v
방문배열 n짜리 만들고 미방문시 출력 - dc App
int mp[2000001]; for (int i: ar) ++mp[i]; for (int i = 0; i < 2000001; ++i) if (!mp[i]) cout << i << ' ';
bool vis[N] 만들어놓고 배열 다 돌면서 방문했으면 false로 바꿔준다음 vis[N] 돌면서 true 다 출력
memo할수있으면 그게 제일 직관적이고 만약 메모리를 O(1)로 써야해서 메모를 못한다면 주어진 숫자 다 더하고 N(N+1)/2에서 더한값을 빼는 방법이 있음
아 그러네
1+2+...n = n(n+1)/2, 1^2 + 2^2 + ... + n^2 = n(n+1)(2n+1)/6 이용하면 빠진 두 수를 u, v라 할 때 u+v, u^2+v^2 알 수 있고 여기서 uv 구할 수 있음. 이차방정식 t^2-(u+v)t+uv=0의 두 근이 u, v