많은 수의 분할 가능

주제 : LightOJ 문제 : 1214 - 대형 부문

을 감안할 때 두 개의 정수, b를 , 당신이 있는지 여부를 확인해야한다 A가 로 나누어 B 여부. 우리는 정수 알고 A는 정수로 나누어 b를 정수가 존재하는 경우에만, c를 그와 같은 A = B의 *의 다 .

입력

입력이 정수 시작 (T 525 ≤) 테스트 케이스의 수를 나타내는.

각각의 경우는 두 개의 정수를 포함하는 라인 개시 (-10 200 ≤ 10 ≤ 200 )(| ㄴ |> 0, b는 32 비트 정수에 맞는) B . 숫자 앞에 0이 포함되지 않습니다.

산출

각각의 경우를 들어, 첫번째 케이스 번호를 인쇄 할 수 있습니다. 그런 다음 인쇄 '나누어' 경우 A는 로 나누어 B . 그렇지 않으면 인쇄 '나눌 수없는' .

샘플 입력

샘플 입력에 대한 출력

6

(101) (101)

0 67

-101 (101)

7,678,123,668,327,637,674,887,634 (101)

11,010,000,000,000,000,000 (256)

-202202202202000202202202 -101

사례 1 : 나누어

사례 2 : 나눌

사례 3 : 나누어

사례 4 : 나눌 수없는

사례 5 : 나누어

사례 6 : 나누어

질문의 의미 :

    판정으로 나누어지는 다수의 B는하기 (참고 포지티브 및 네거티브) 여부

번호 이론 원리 :

    (a + b) %의 p = (a %의 P + B %의 P) % 피

    합동의 정리 모드 : https://baike.baidu.com/item/%E5%90%8C%E4%BD%99%E5%AE%9A%E7%90%86

    합동 금형 정리 : https://baike.baidu.com/item/%E5%8F%96%E6%A8%A1%E8%BF%90%E7%AE%97/10739384

코드 :

  

#INCLUDE <비트 / stdc ++ H.>
 사용  스페이스 성병;
INT 의 main () 
{ 
     숯불 이 [ 205 ];
     INT의 N;
     INT의 B; 
     CIN >> N;
     위한 ( int로 I = 1 ; I ++는, 난 <= N ) 
     { 
         CIN 사항 >> >> B;
         INT LEN = strlen 함수 (a);
         INT의 플래그 = 0 , ANS = 0 ;
         경우 (a [ 0 ] == ' - '  )
         플래그= 1 ;
          ( INT의 J = 플래그, J <LEN, J ++ ) 
         { ANS
             = ( INT ) (((  길이 ) ans와 * 10 + (a [J] - ' 0 ' ))의 % B); 
        } 
        의 printf ( " 케이스 %의 D : " , I);
        경우 (ANS == 0 ) 
         의 printf ( " 나눌 \ n을 " );
        다른 사람 
         의 printf ( " 나눌 수없는 \ n을 " ); 
     }
     반환  0; 
 }

 

추천

출처www.cnblogs.com/BYBL/p/10994308.html