목록c언어 (8)
레야몬
#include #define mod 1000000007 void multiple(long long int F[2][2], long long int M[2][2]); void power(long long int F[2][2], long long int n); void multiple(long long int F[2][2], long long int M[2][2]) { long long int a, b, c, d; a=(F[0][0]*M[0][0] + F[0][1]*M[1][0])%mod; b=(F[0][0]*M[0][1] + F[0][1]*M[1][1])%mod; c=(F[1][0]*M[0][0] + F[1][1]*M[1][0])%mod; d=(F[1][0]*M[0][1] + F[1][1]*M[1][1]..
#include long long int arr[10000000]; long long int f(long long int n) { long long int a, b; if(n
#include int memo[11]; int f(int n) { switch(n) { case 3: return 4; case 2: return 2; case 1: return 1; } if(memo[n]) //이미 메모되어 있는 경우 메모되어 있는 값 반환 return memo[n]; return memo[n] = f(n-1)+f(n-2)+f(n-3); //1, 2, 3의 합으로 재귀 } int main() { int T, n; //테스트 케이스의 개수, 정수 n int i; scanf("%d", &T); for(i=0; i
#include #include #define MAX_QUEUE_SIZE 006000 typedef struct Co { //좌표를 영어로 하면 coordinate int x; int y; int day; } Co; typedef struct Queue { //큐 구현 int start; int rear; Co data[MAX_QUEUE_SIZE]; } Queue; int a[4] = {1, 0, -1, 0}; //상하좌우 int b[4] = {0, -1, 0, 1}; void enqueue(Queue *q, Co c) { q->rear = (q->rear+1)%MAX_QUEUE_SIZE; q->data[q->rear]=c; } Co dequeue(Queue *q) { q->start=(q->start+..
#include int arr[129][129]; int N, w, b; int DQ(int n, int x, int y) //몇 번 나눠졌는가, 가장 왼쪽 위 종이의 위치가 어디인가? { int i, j; int k=N, flag=0; for(i=0; i
#include #include #define MAX_VERTICES 101 int cnt; typedef struct GraphType { int n; int adj_mat[MAX_VERTICES][MAX_VERTICES]; } GraphType; void init(GraphType *g) { int r, c; g->n=0; for(r=0; radj_mat[start][end]=1; g->adj_mat[end][start]=1; } void cnt_vertex(int u, GraphType *g) { int i, j; for(i=1; in; i++) { if(g->adj_mat[u][i]) { for(j=1; jn; j++) g->adj_mat[j][i]=0; g->adj_mat[u][i]=0, g->..
#include #include typedef struct { int s; int e; } Tuple; Tuple tuple[100000]; int compare(const void *a, const void *b) //qsort 비교함수 { int AS, AE, BS, BE; AS = ((Tuple *)a)->s; AE = ((Tuple *)a)->e; BS = ((Tuple *)b)->s; BE = ((Tuple *)b)->e; if(AE>BE || (AE==BE && AS>BS)) return 1; else return -1; } int main() { int N; //회의 개수 int S; //회의 시작 시간, 끝나는 시간 int n=-1, cnt=0; int i; scanf("%d", &N); ..
#include #define SWAP(x, y) do{int tmp; tmp=x; x=y; y=tmp;}while(0) #define MAX_N 100000 typedef struct _heap { //힙 구조체 int arr[MAX_N]; int size; } heap; heap h; void insert(heap* hp, int data) //힙 넣기 { int here = ++hp->size; while((here!=1) && (dataarr[here/2])) { hp->arr[here] = hp->arr[here/2]; here/=2; } hp->arr[here] = data; } int deleteData(heap *hp) //힙 꺼내기 { if(!hp->size) return 0; int r..