본문 바로가기

분류 전체보기112

[C]Square and multiply 알고리즘 거듭제곱 순환 알고리즘을 배우다가 square-and-multiply 알고리즘을 알게 되었고 직접 구현을 시도하게 되었다. 이 알고리즘의 핵심은 ,1. X^n (mod p) 연산을 하고자 할 때 n을 2진수로 변환했을 때 , LSB가 1인지 여부를 확인한다 2. 지수의 2진수 값: 0 => 값을 제곱 : 1 => 값을 제곱 후 X를 곱한다 3. 다음 bit로 이동=> 이때, 기본설정으로 값을 제곱하는 이유는 비트가 LSB에서부터 하나씩 오른쪽으로 늘어나고있기때문에 전체적으로 값은 제곱이 된다. (1) 거듭제곱의 성질: 아래의 성질을 이용하여 지수승을 계산해줄때마다 mod 연산을 취해주면 오버플로우 현상을 방지할 수 있다. A^B(mod C) = ((A mod C)^B) (mod C) ex) 3^5 연산 .. 2023. 6. 8.
220824(CH20) 1. #define _CRT_SECURE_NO_WARNINGS #include #include //동적할당 #include void print(); void rotate(); int main() { int arr[4][4]; int i, j; int set = 1; for (i = 0; i < 4; i++) { for (j = 0; j < 4; j++) { arr[i][j] = set; set++; } } print(arr); rotate(arr); rotate(arr); rotate(arr); return 0; } void rotate(int (*param)[4]) { int i, j; int new[4][4]; for (i = 0; i < 4; i++) { for (j = 0; j < 4; j++) .. 2022. 8. 21.
220817(CH15) 1. #define _CRT_SECURE_NO_WARNINGS #include #include //동적할당 void even(); void odd(); int main() { int arr[10]; int i; //10개 정수 입력 받기 printf("총 10개의 숫자 입력\n"); for (i = 0; i < 10; i++) { printf("입력:"); scanf("%d", &arr[i]); } even(arr); odd(arr); return 0; } void even(int* param1) { int i; int size=1; int temp; int j=0; int* sorteven = (int*)calloc(sizeof(int),size); for (i = 0; i < 10; i++) { if.. 2022. 8. 17.
220810(CH26~27) CH26 1. #define _CRT_SECURE_NO_WARNINGS #include #include #define MUL(A,B,C) ((A)*(B)*(C)) #define ADD(A,B,C) ((A)+(B)+(C)) int main() { int a, b, c; printf("숫자 3개 입력:"); scanf("%d %d %d", &a, &b, &c); printf("세 정수의 합:%d\n", ADD(a, b, c)); printf("세 정수의 곱:%d\n", MUL(a, b, c)); return 0; } 2. #define _CRT_SECURE_NO_WARNINGS #include #include #define PI 3.14 #define AREA(R) ((R)*(R)*(PI)) int main.. 2022. 8. 10.
220809(CH25) #define _CRT_SECURE_NO_WARNINGS #include #include int main() { int* pi; pi = (int*)malloc(sizeof(int)); if (pi == NULL) { printf("동적 메모리 할당에 실패했습니다."); exit(1); } *pi = 100; printf("%d\n", *pi); //동적 메모리 사용한 이후에는 무조건 해당 메모리 반환 free(pi); } method1. #define _CRT_SECURE_NO_WARNINGS #include #include int main() { char arr[30]; int i = 0; for (i = 0; i < 26; i++) { arr[i] = 'a' + i; } for (i = 0; i <.. 2022. 8. 9.
220802(CH23) 1.공용체 공용체 변수를 이루는 멤버의 시작 주소 값 모두 동일 가장 큰 자료형을 기준으로 할당된다. EX)int mem1, int mem2, double mem3; 1)공용체 변수 -------------double------------ --mem1-- --mem2-- -------------mem3------------- 2)일반 구조체 변수 --int mem1-- --int mem2-- ---------double mem3-------- ex 23-4) 1. 프로그램 사용자로부터 int형 정수 하나를 입력 받을 것 2. 입력 받은 정수의 상위 2바이트와 하위 2바이트 값을 양의 정수로 출력할 것 3. 그 다음 상위 1바이트와 하위 1바이트에 저장된 값의 아스키 문자 출력할 것 #define _CRT.. 2022. 8. 2.