C.ブック読書(Codeforcesラウンド#582(DIV。3))

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 ] = { 1234
 

 
 
  
 

 
 567890 }。
    R [ 2 ] = { 24680 }。
    R [ 3 ] = { 3692581470 }。
    R [ 4 ] = { 48260 }。
    R [ 5 ] = { 50 }。
    R [ 6 ] = { 62840 }。
    R [ 7 ] = { 7418529630 }。
    R [ 8 ] = { 86420 }。
    R [ 9 ] = { 9876543210 }。
 
 
    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 
}

 

 


 

おすすめ

転載: www.cnblogs.com/Shallow-dream/p/11517777.html