polycarpは、以下からなる本を読んでいる n個のnから番号のページ 1へ1 のnのn。彼は割り切れる数でページを終了するたびに 、m個の mは、彼がこのページ番号の最後の桁下に書き込みます。例えば、 N = 15、N = 15、 M = 5、M = 5、で割り切れるページ Mの mは 5 、10 、15 5,10,15。彼らの最後の桁がある 5 、0 、5に対応し、その合計は5,0,5 10 10。
あなたの仕事はのpolycarpがダウンして書かれたすべての数字の合計を計算することです。
あなたは答えなければならない のq qは独立したクエリを。
入力
入力の最初の行は1つの整数含ま Qの Q(1つの≤ Q ≤ 1000年クエリの数- 1≤q≤1000を)。
次 のqのqラインは、クエリ、1行に1つずつ含まれています。各クエリは、二つの整数として与えられ、 nは nおよび m個の M(1 ≤ N 、M ≤ 10 16それぞれブックのページ数と必要な除数、 - 1≤n、m≤1016)。
出力
polycarpで書き留め桁の合計 - 各クエリのためにそれのための答えを印刷します。
例
入力
コピー
7 1 1 10 1 100 3 1024 14 998244353 1337 123 144 1234312817382646 13
出力
コピー
1 45 153 294 3359835 0 427262129093995
分析:nおよびmの範囲内で計算桁の数字は、の倍数であります
#include <ビット/ STDC ++ H> の#define TOP 10001 用いて名前空間STDを、 typedefの長い長いLL。INT メイン() { ios_base :: sync_with_stdio(0 )。 cin.tie(0 )。 地図 < INT、ベクトル< INT >> R。 int型Q; LLのM、N、COC、休息、フィン、ANS。 ベクトル < int型 > AUX。 R [ 1 ] = { 1、2、3、4、 5、6、7、8、9、0 }。 R [ 2 ] = { 2、4、6、8、0 }。 R [ 3 ] = { 3、6、9、2、5、8、1、4、7、0 }。 R [ 4 ] = { 4、8、2、6、0 }。 R [ 5 ] = { 5、0 }。 R [ 6 ] = { 6、2、8、4、0 }。 R [ 7 ] = { 7、4、1、8、5、2、9、6、3、0 }。 R [ 8 ] = { 8、6、4、2、0 }。 R [ 9 ] = { 9、8、7、6、5、4、3、2、1、0 }。 cinを >> Q; 一方、(q-- ){ CIN >> N >> M。 COC = N / M。 フィン = M%10 。 ANS = 0 ; 場合(フィン!= 0 ){ AUX= R [フィン]。 N = aux.size()。 残り = COC%N。 COC / = N。 用(int型 I = 0 ; iがN <++ i)は ANS + = AUX [I] *(COC +(iは< REST))。 } COUT << ANS << ' の\ n ' ; } 戻り 0 。 }