티스토리 뷰

알고리즘/BOJ

[백준] 14679 영우와 '갓4'

세진짱 2018. 7. 19. 20:16


너무너무너무너무너무너무너무 많이 틀린 문제다

틀린 이유는 mod를 잘못써서...


입력이 5000만이기 때문에 그대로 입력받고 하라는대로 하면 시간초과다

10억을 log2로 해도 30정도 되기 때문에 미리 구해놓아야 한다


그리고 모듈러를 잘써야한다

아직도 잘 모르겠지만 출력해야 할 답을 계속 모듈러 했더니 틀리고

마지막에만 하니 맞았따.. 모듈러 초보에겐 너무나 어려운 문제다


소스코드

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
31
32
33
34
35
36
37
38
39
40
41
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
#define ll long long
const ll mod = 1e9 + 7;
int n;
ll A, D, H, MA, MD, MH, Aa, Da, Ha;
ll Ap, Dp, Hp;
ll nMA, nMD, nMH;
ll arrMA[101], arrMD[5], arrMH[1010];
ll mypow(ll x, ll y, ll mymod) {
    if (!y) return 1;
    if (y & 1return x*mypow(x, y - 1, mymod) % mymod;
    return mypow((x*x) % mymod, y / 2, mymod) % mymod;
}
bool war() {
    ll my = max((A - MD), 1LL);
    ll monster = max((MA - D), 1LL);
    return ((ll)ceil(1.0*MH / my) <= (ll)ceil(1.0*/ monster));
 
}
int main() {
    scanf(" %d"&n);
    scanf(" %lld %lld %lld"&A, &D, &H);
    scanf(" %lld %lld %lld"&MA, &MD, &MH);
    scanf(" %lld %lld %lld %lld %lld %lld"&Ap, &Aa, &Dp, &Da, &Hp, &Ha);
    for (int i = 1; i <= 100; i++) arrMA[i] = mypow(i, Ap, 100LL);
    for (int i = 1; i <= 3; i++) arrMD[i] = mypow(i, Dp, 3LL);
    for (int i = 1; i <= 1000; i++) arrMH[i] = mypow(i, Hp, 1000LL);
    for (int i = 0; i < n; i++) {
        if (!war()) {
            puts("-1"); return 0;
        }
        A += MA; D += MD; H += MH;
        MA = ((arrMA[MA] + Aa) % 100LL) + 1LL;
        MD = ((arrMD[MD] + Da) % 3LL) + 1LL;
        MH = ((arrMH[MH] + Ha) % 1000LL) + 1LL;
    }
    printf("%lld %lld %lld\n", A%mod, D%mod, H%mod);
}
cs


'알고리즘 > BOJ' 카테고리의 다른 글

[백준] 12896 스크루지 민호  (0) 2018.07.22
[백준] 12892 생일 선물  (0) 2018.07.22
[백준] 5446 용량 부족  (0) 2018.07.18
[백준] 12861 죄수에게 주는 뇌물  (0) 2018.07.18
[백준] 12899 데이터 구조  (0) 2018.07.18
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/06   »
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
글 보관함