トピック:LightOJ問題:: 1214 -大部門
与えられた二つの整数、AとBは、あなたがいるかどうか確認する必要があり割り切れるBか。私たちは、整数のことを知っているaは整数で割り切れるBの整数が存在する場合に限り、Cというように=のb * cは。
入力
入力は整数で始まりT(525以下)テストケースの数を表します。
各ケースは、2つの整数を含む行から始まる(-10 200 ≤10≤ 200)及びB(| B |> 0、bが32ビット符号付き整数に適合する)。数値は先頭のゼロは含まれません。
出力
各場合について、最初のケース番号を印刷します。そして、印刷「割り切れる」場合で割り切れるB。それ以外の場合は、印刷「割り切れません」。
サンプル入力 |
サンプル入力用の出力 |
6 101 101 0 67 -101 101 7678123668327637674887634 101 11010000000000000000 256 -202202202202000202202202 -101 |
ケース1:割り切れます ケース2:割り切れます ケース3:割り切れます ケース4:割り切れません ケース5:割り切れます ケース6:割り切れ |
質問の意味:
Bか否かを決意で割り切れる多数(正および負ことに留意されたい)に
数論原理:
(A + B)%、P =(%Pが+のB%P)が%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> 使用して 名前空間STDを、 INT メイン() { char型 [ 205 ]。 int型のn; int型のB; cinを >> N; 以下のために(int型 i = 1 ; iが++; iが<= N ) { CIN >> A >> B。 INT LEN = STRLEN(A)。 int型フラグ= 0、ANS = 0 。 もし([ 0 ] == ' - ' ) フラグ= 1 ; 用(int型 J =フラグ; J <LEN; J ++ ) { ANS =(INT)(((長い 長い)ANS * 10 +([J] - ' 0 '))%のB)。 } のprintf(" ケース%D:" 、I)。 もし(ANS == 0 ) のprintf(" 割り切れる\ nを" ); 他 のprintf(" 割り切れない\ nを" ); } リターン 0 ; }