게임강의
각종 노하우 분류

각종 노하우 [C를 활용한 문제해결 기법의 근간] 학습용!! 2자리소수

컨텐츠 정보

본문

[출처: Gamezone]
작성자: 작성자 없음

백준에 있는 문제로 응용된 케이스...


공부용으로 쓰세요~


 


#define _CRE_SECURE_NO_WARNINGS

#pragma warning(disable:4996)

#include <stdio.h>

#include <string.h>

int main(void) {

    FILE *input_file = fopen("2digit_prime.inp", "r");

    FILE *output_file = fopen("2digit_prime.out", "w");

    int arr[21] = { 0 }; //소수 배열

    int c; //조합경

    int T = 0; //몇번돌림

    int x = 0;//소수 보조

    //char count; //받아온값 카운트에넣기

    int cnt = 0; //소수일때 카운트

    char buf[6] = { 0 }; // 버퍼 6칸

    int a = 0; //a값 받아오기

    int b = 0; //b값 받아오기

    int cnt2 = 0; //a-b 까지 소수갯수

    int temp = 0;

    for (int q = 10; q < 100; q++) {

        if (q % 2 != 0 && q % 3 != 0 && q % 5 != 0 && q % 7 != 0) {

            arr[x] = q;

            x++;

        }

    }

    fscanf(input_file, "%d", &T);

    for (int q = 0; q < T; q++) {

        fscanf(input_file, "%d%d\n", &a, &b);

        for (a; a <= b; a++) {

            temp = a;

            sprintf(buf, "%d", temp);//numbering은 저장할 char형 배열. a는 바꿔야 되는 int 부분.

            for (int j = 0; j <strlen(buf); j++) {

                if (buf[j]-48 == 0) {//십의자리0일때 걸러주고 

                    continue;

                }

                for (int k = 0; k < strlen(buf); k++) {

                    if (buf[k]-48 == 0) {

                        continue;

                    }

                    //십의자리 0일때 걸러주고

                    if (j == k) {

                        continue;

                    }

                    for (int f = 0; f < 21; f++) {

                        c = (buf[j] - 48) * 10 + (buf[k] - 48);

                        if (c == arr[f]) {

                            cnt = 1;

                            break;

                        }

                    }

                    if (cnt == 1) {

                        break;

                    }

                }

                if (cnt == 1) {

                    break;

                }

                

            }

            if (cnt == 1) {

                cnt2++;

            }

            cnt = 0;

            }

        while (buf[cnt] != NULL) {

            buf[cnt++] = NULL;

        }

        fprintf(output_file, "%d\n", cnt2);

        cnt2 = 0;

    }

}

관련자료

댓글 0
등록된 댓글이 없습니다.
전체 422 / 16 페이지
번호
제목
이름

강의실

🏆 포인트 랭킹 TOP 10
순위 닉네임 포인트
1 no_profile 타키야겐지쪽지보내기 자기소개 아이디로 검색 전체게시물 82,042
2 no_profile 라프텔쪽지보내기 자기소개 아이디로 검색 전체게시물 51,280
3 no_profile 동가리쪽지보내기 자기소개 아이디로 검색 전체게시물 32,591
4 no_profile Revolution쪽지보내기 자기소개 아이디로 검색 전체게시물 28,199
5 서번트쪽지보내기 자기소개 아이디로 검색 전체게시물 23,416
6 no_profile 닥터스쪽지보내기 자기소개 아이디로 검색 전체게시물 22,310
7 no_profile 불멸의행복쪽지보내기 자기소개 아이디로 검색 전체게시물 13,822
8 no_profile 호롤롤로쪽지보내기 자기소개 아이디로 검색 전체게시물 13,500
9 no_profile 검은고양이쪽지보내기 자기소개 아이디로 검색 전체게시물 13,246
10 no_profile 하늘2쪽지보내기 자기소개 아이디로 검색 전체게시물 13,239
알림 0