//개미(S)(AC)
#include <stdio.h>

int w, h, p, q, t, dx=1, dy=1;

int main() {

    scanf("%d %d %d %d %d", &w, &h, &p, &q, &t);

    while(t) {
        if(p==0) dx=1;
        if(p==w) dx=-1;

        if(q==0) dy=1;
        if(q==h) dy=-1;

        p+=dx, q+=dy;
        t--;
    }

    printf("%d %d", p, q);

}

//집에 가는 길(M)(AD)
#include <stdio.h>
#define MAX 99999999
int n, m, G[20][20], v[20], res=MAX;

void f(int idx, int cost) {

    if(cost>res) return;
    if(idx==n) {
        res = (res>cost ? cost:res);
        return;
    }

    for(int i=1; i<=n; i++) {
        if(!v[i] && G[idx][i]) {
            v[idx]=1;
            f(i, cost+G[idx][i]);
            v[idx]=0;
        }
    }

}

int main() {

    scanf("%d %d", &n, &m);
    for(int i=0; i<m; i++) {
        int s, e, w;
        scanf("%d %d %d", &s, &e, &w);
        G[s][e]=G[e][s]=w;
    }

    v[1]=1;
    f(1, 0);
    if(res==MAX) res=-1;
    printf("%d", res);
}

//오목(S)(AE)
#include <stdio.h>

int arr[15][15], dx[]={0, 1, 1, 1}, dy[]={1, 1, 0, -1}, cnt;

void f(int x, int y, int dir, int color) {

    if(arr[x][y]!=color) {
        return;
    }
    cnt++;
    f(x+dx[dir], y+dy[dir], dir, color);

}

int main() {

    for(int i=1; i<=10; i++) {
        for(int j=1; j<=10; j++) {
            scanf("%d", &arr[i][j]);
        }
    }

    for(int i=1; i<=10; i++) {
        for(int j=1; j<=10; j++) {
            if(arr[i][j]) {
                for(int dir=0; dir<4; dir++) {
                    if(arr[i-dx[dir]][j-dy[dir]]!=arr[i][j]) {
                        cnt=0;
                        f(i, j, dir, arr[i][j]);
                        if(cnt==5) {
                            printf("%d", arr[i][j]);
                            return 0;
                        }
                    }
                }
            }
        }
    }

    printf("0");
    return 0;
}

//리모컨(AF)
#include <stdio.h>
#include <queue>
struct SET { int x, cnt; };
int a, b, but[]={1, 5, 10};

int main() {
    scanf("%d %d", &a, &b);

    std::queue<SET> q;
    q.push((SET){a, 0});

    while(!q.empty()) {
        struct SET cur=q.front();
        q.pop();

        if(cur.x==b) {
            printf("%d", cur.cnt);
            return 0;
        }
        else if(cur.x > b) {
            for(int i=0; i<3; i++) {
                if(cur.x>=but[i]) q.push((SET){cur.x-but[i], cur.cnt+1});
            }
        }
        else {
            for(int i=0; i<3; i++) {
                if(cur.x+but[i]<=40) q.push((SET){cur.x+but[i], cur.cnt+1});
            }
        }
    }

}

//오른편 절단 가능 소수(AG)
#include <stdio.h>

int cnt, odd[]={1, 3, 7, 9};

bool isPrime(int n) {
    for(int i=2; i*i<=n; i++) {
        if(n%i==0) return 0;
    }
    return 1;
}

void f(int k, int len) {
    if(len==0) {
        printf("%d\n", k);
        cnt++;
    }
    else {
        for(int i=0; i<4; i++) {
            int np = k*10+odd[i];
            if(isPrime(np))
                f(np, len-1);
        }
    }
}


int main() {
    int n;
    scanf("%d", &n);

    f(2, n-1); f(3, n-1); f(5, n-1); f(7, n-1);
    printf("%d", cnt);
}

//구간에서의 소수 찾기(AH)
#include <stdio.h>

bool prime[1000010]={1, 1, };

void f() {
    for(int i=2; i*i<=1000000; i++) {
        if(prime[i]==0) {
            for(int j=i*i; j<=1000000; j+=i)
                prime[j]=1;
        }
    }
}

int main() {
    int a, b;
    scanf("%d %d",&a, &b);

    f();

    for(int i=a; i<=b; i++) {
        if(prime[i]==0) printf("%d ", i);
    }
}

//Super Prime number(AI)
#include <stdio.h>
#include <vector>

bool prime[100010]={1, 1,};
int pcnt;
std::vector<int> v;

void f() {
    for(int i=2; i*i<=100000; i++) {
        if(prime[i]==0) {
            for(int j=i*i; j<=100000; j+=i)
                prime[j]=1;
        }
    }
}

int main() {
    int n;
    scanf("%d", &n);

    f();

    for(int i=2; i<=n; i++) {
        if(prime[i]==0) {
            pcnt++;
            if(prime[pcnt]==0) v.push_back(i);
        }
    }

    printf("%d\n", v.size());
    for(int i=0; i<v.size(); i++)
        printf("%d ", v[i]);
}

//두색칠하기(AJ)
#include <stdio.h>

int G[210][210], v[210], n, m;

void f(int idx, int color) {
    //if(v[idx]) return;
    v[idx]=color;

    for(int i=0; i<n; i++) {
        if(G[idx][i] && v[i]==color) {
            v[idx]=0;
            return;
        }
    }

    for(int i=0; i<n; i++) {
        if(G[idx][i] && !v[i]) {
            f(i, 3-color);
        }
    }
}

int main() {

    scanf("%d %d", &n, &m);

    for(int i=0; i<m; i++) {
        int a, b;
        scanf("%d %d", &a, &b);
        G[a][b]=G[b][a]=1;
    }

    f(0, 1);

    for(int i=0; i<n; i++) {
        if(!v[i]) {
            printf("IMPOSSIBLE");
            return 0;
        }
    }

    printf("OK");
    return 0;
}

//maximum sum(L)(AK)
#include <stdio.h>

int arr[100010], DT[100010], res=-10000010;

int max(int a, int b) { return (a>b ? a:b);}

int main() {
    int n;
    scanf("%d", &n);

    for(int i=1; i<=n; i++)
        scanf("%d", &arr[i]);

    for(int i=1; i<=n; i++) {
        DT[i]=max(DT[i-1]+arr[i], arr[i]); //DT[i] : arr[i]를 포함할 때, 최댓값
        res = max(DT[i], res);
    }
    printf("%d", res);
}

//계단 뛰어 오르기(L)(AL)
#include <stdio.h>
#define MOD 100007

int DT[10000010]={0, 1, 2, 4,};

int main() {
    int n;
    scanf("%d", &n);

    for(int i=4; i<=n; i++) {
        DT[i]=(DT[i-1]+DT[i-2]+DT[i-3])%MOD;
    }
    printf("%d", DT[n]);
}

//minimum sum(M)(AM)
#include <stdio.h>

int n, arr[20][20], col[20], res=300000;

void f(int row, int sum) {
    if(sum>res) return;
    if(row>n) {
        res=(sum<res ? sum:res);
        return;
    }
    else {
        for(int i=1; i<=n; i++) {
            if(!col[i]) {
                col[i]=1;
                f(row+1, sum + arr[row][i]);
                col[i]=0;
            }
        }
    }
}

int main() {
    scanf("%d", &n);

    for(int i=1; i<=n; i++) {
        for(int j=1; j<=n; j++) {
            scanf("%d", &arr[i][j]);
        }
    }

    f(1, 0);

    printf("%d", res);
    return 0;
}

//예산관리(AN)
#include <stdio.h>
int B, n, arr[25], res=-1;

void f(int idx, int sum) {
    if(sum>B) return;
    if(idx==n) {
        res = (res>sum? res:sum);
    }
    else {
        f(idx+1, sum+arr[idx]);
        f(idx+1, sum);
    }
}

int main() {
    scanf("%d %d", &B, &n);
    for(int i=0; i<n; i++)
        scanf("%d", &arr[i]);

    f(0, 0);

    printf("%d", res);

}

//거스름돈(L)(AO)

//#1. queue
#include <stdio.h>
#include <queue>

int m, n, coin[10], DT[100010];

int main() {
    scanf("%d %d", &m, &n);

    for(int i=0; i<n; i++)
        scanf("%d", &coin[i]);

    std::queue<int> q;

    q.push(0);

    while(!q.empty()) {
        int cur=q.front();
        q.pop();

        if(cur==m) {
            printf("%d", DT[cur]);
            return 0;
        }
        else {
            for(int i=0; i<n; i++) {
                int nx=cur+coin[i];
                if(nx<=m && !DT[nx]) {
                    q.push(nx);
                    DT[nx]=DT[cur]+1;
                }
            }
        }
    }

    printf("99999");
    return 0;

}

//저울추(AP)
#include <stdio.h>

int right[8], left[8], rnum, lnum;

int main() {
    int n, digit=1;

    scanf("%d", &n);

    printf("%d ", n);

    while(n) {
        if(n%3==1) right[rnum++]=digit;
        else if(n%3==2) left[lnum++]=digit;

        n++;
        n/=3;
        digit*=3;
    }
    for(int i=0; i<lnum; i++)
        printf("%d ", left[i]);
    printf("0 ");
    for(int i=0; i<rnum; i++)
        printf("%d ", right[i]);
}

//Combination(L) #1(AE)
#include <stdio.h>
#define MOD 1000009

int DT[310][310];

int f(int n, int k) {
    if(k==1) return DT[n][k]=n;
    if(n==k) return DT[n][k]=1;
    if(DT[n][k]) return DT[n][k];
    else return DT[n][k]=(f(n-1,k-1)+f(n-1,k))%MOD;
}

int main() {
    int n, k;
    scanf("%d %d", &n, &k);
    printf("%d\n", f(n,k));
    return 0;
}

Intégrer sur un site web

Pour intégrer ce projet à votre site web, copiez le code suivant et collez-le dans le HTML de votre site web :