주제 : 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; }