본문 바로가기

전체 글

2331 반복수열 전에 풀었던 문제.. burningjeong.tistory.com/434 2331 반복수열 아 입력받는다고 했는데 입력이 아니고 계산임 #include #include #include #include #include #include #include #include #include #include #include #include #include #define xx first #define yy second #.. burningjeong.tistory.com 숫자가 중복돼서 나오면 그 수는 반복수열의 시작점이라는 소리니깐 이 위치를 출력하면 된다. #include #include #include #include #include #include #include #include #include #include .. 더보기
3474 교수가 된 현우 음.. 이 문제는 어떻게 해야할지 모르겠다. 입력이 10억이라 O(N)으로도 안 풀리고 10억개의 배열에 미리 저장할 용량도 안 된다. 어떻게 풀지 떠오르는게 없는데... ㅗㅓ... 찾아보니 소인수분해로 계산하구나 숫자가 주어졌을 때 0몇 개 있는지 계산하려면 숫자에 10이 몇 번 곱해졌는지 확인하면 된다. 그럼 2의 개수와 5의 개수를 알면 됨 하지만 다들 이런 코드를 쓰는데 이해를 못하겠다 왜 제곱의 몫을 더하지??? 오 신기하다 이렇게 계산 되는구나 개수가 제곱씩 줄어들어서 그럼 #include #include #include #include #include #include #include #include #include #include #include #include #include #define.. 더보기
8979 올림픽 에이 뭐야 전에 풀었던거잖아~ (그래놓곤 틀림) 다시 푸는 문제는 코드를 더 깔끔히 짤 수 있는데 단점은 문제 대충 읽어서 잘못 구현함 #include #include #include #include #include #include #include #include #include #include #include #include #include #define xx first #define yy second #define all(x) (x).begin(), (x).end() using namespace std; using i64 = long long int; using ii = pair; using ii64 = pair; using iii = tuple; struct st { int i; int b; int.. 더보기
14961 회전 초밥 다시보는 초밥문제~ 하지만 과거의 자신을 뛰어넘지 못했다는 소식입니다 #include #include #include #include #include #include #include #include #include #include #include #include #include #define xx first #define yy second #define all(x) (x).begin(), (x).end() #define MAXV 10000005 using namespace std; using i64 = long long int; using ii = pair; using ii64 = pair; using iii = tuple; int main() { int n, d, k, c; scanf("%d %d %d.. 더보기
2193 이친수 처음에 i64안 해서 틀렸다 숫자 범위가 어떨지 감이 안 잡혀 #include #include #include #include #include #include #include #include #include #include #include #include #include #define xx first #define yy second #define all(x) (x).begin(), (x).end() using namespace std; using i64 = long long int; using ii = pair; using ii64 = pair; using iii = tuple; i64 cache[2][100]; i64 func(int start, int N) { if (N == 0) return 1; .. 더보기
11057 오르막 수 #include #include #include #include #include #include #include #include #include #include #include #include #include #define xx first #define yy second #define all(x) (x).begin(), (x).end() #define MOD 10007 using namespace std; using i64 = long long int; using ii = pair; using ii64 = pair; using iii = tuple; int cache[1005][11]; int func(int start, int len) { if (len == 0) return 1; int& ref = .. 더보기
12842 튀김 소보루 [미완] 모르겠다! 다음에 보자 튀소! #include #include #include #include #include #include #include #include #include #include #include #include #include #define xx first #define yy second #define all(x) (x).begin(), (x).end() #define MAXV 10000005 using namespace std; using i64 = long long int; using ii = pair; using ii64 = pair; using iii = tuple; int main() { int n, s, m; scanf("%d %d %d", &n, &s, &m); vector vm.. 더보기
결과 MOD 나누는 거 관련 a = 999999999 b = 999999999 라고 가정하면 a % MOD + b % MOD = 1999999998이 되지만 (a + b ) % MOD라고 하면 99999998이 되어서 오버플로우가 나지 않는다 (와우) 이걸 int 범위 안에 넣게 하기 위해서 마지막에 자른다고 생각하면 잘 이해된다. 암튼 덧셈부터 하고 MOD하는게 오버플로우가 나지 않는 이유는 결과값이 10억 미만인게 보장이 됨 (마지막에 MOD 취해버리니깐) 그래서 이 두개를 더하면 20억 미만이 돼서 당연히 int안에 들어간다! > 만약 덧셈이 두 개 이상이라면? ((a+b) % MOD + c) % MOD 이런 순서대로 더한다 > 곱셈이라면?? 64비트 쓰세용 더보기