PAT 고급 1152 구글 모집 (20 分)

2004 년 7 월, 구글은 모집 (아래 그림) 실리콘 밸리에서 101 번 고속도로를 따라 거대한 광고판에 게시. 내용은 처음 10 자리의 소수로 구성된 URL 자연 상수의 연속 자리에있는, 슈퍼 간단합니다  전자. 이 소수를 찾을 수있는 사람은이 웹 사이트를 방문하여 구글의 채용 과정의 다음 단계로 갈 수있다.

prime.jpg

자연 상수  E는 공지 초월 번호 (超越数)이다. 처음 몇 자리는 다음과 같습니다  굵게 표시된 10 개 자리가 구글의 질문에 대한 대답입니다 전자 = 2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427427466391932003059921 ....

이제 당신은 더 일반적인 문제를 해결하라는 메시지가 표시됩니다 : 주어진 L-자리 숫자의 연속 자리에서 처음으로 K-자리 소수를 찾을 수 있습니다.

입력 사양 :

각 입력 파일은 하나의 테스트 케이스가 포함되어 있습니다. (L : 각 경우 먼저 라인 두 양의 정수에 제공 1000 ≤) 및 K ( 주어진 숫자와 소수의 자릿수의 숫자이다 <10), 각각 발견된다. 이어서 L 자리 숫자 N은 다음 라인에 주어진다.

출력 사양 :

이러한 번호가 출력을 존재하지 않는 경우 각 테스트 케이스를 들어, 라인 N.의 연속적인 자리에서 처음으로 K-자리 소수를 인쇄  404 하는 대신. 주 : 선행 0도 K 숫자의 일부로 간주되어야한다. 예를 들면, 200,236에서 4 자리 소수를 찾기 위해, 0023 용액이다. 선두 제로는 원 전화 번호가 아닌 때문에 제 2 자릿수 용액 0002로 취급해서는 안된다.

샘플 입력 1 :

20 5
23654987725541023819

샘플 출력 1 :

49877

샘플 입력 2 :

10 3
2468024680

샘플 출력 2 :

404


사용법 #include <iostream> 
#INCLUDE <cmath> 
#INCLUDE <cstdlib> 사용 스페이스 성병;
// 판사는 소수 부울 isPrime ( INT의 납입이) {
     경우 (NUM 개의 == 2 ||는 num == 3 ) 반환 사실 ;
    위한 ( int로 I = 2 ; I <= SQRT (NUM) 내가 ++ ) {
         경우 (NUM %의 것은 내가 == 0 ) 돌려 거짓 ; 
    } 반환 사실 ; 
} INT 의 main () 
{ INT

 
  
     


    렌은 prime_len; 문자열 str을; 
    CIN >> LEN prime_len >> >> STR;
    위한 ( int로 I = 0 ; i)가 = LEN (-prime_len를 <; 내가 ++ ) {
         INT의 TMP = atoi 함수 (str.substr (I, prime_len) .DATA ());
        경우 (isPrime (TMP가)) { 
            COUT은 << str.substr (나는, prime_len); 
            시스템 ( " 정지 " );
            반환  0 ; 
        } 
    } 
    COUT << 404 ; 
    시스템 ( " 정지 " );
    반환  0 ; 
}

 

추천

출처www.cnblogs.com/littlepage/p/11616681.html