//개미(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;
}
Pour intégrer ce projet à votre site web, copiez le code suivant et collez-le dans le HTML de votre site web :