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

ポータル

質問の意味:

あなたN、K。これは、すべての間隔Xを満たすX%K == 0内で見つける次いでXすべてのビットを加算(すなわち、X%10)、出力させるために、この範囲[1、N]に示されています。

たとえば、次のように入力102

数が246810を満たしています

次いで、2%、4%10 + 10 + 10 + 8%6%10%10 = 10 + 20

そして、出力20

 

ソリューション:

x%のK == X 0を満たし、それは確かに、Kの因子及びyの積、すなわち、1 * K、2 * K、3 * kを、4 * K ......(Y <= N /ありますK)

我々は、同じビット11 * kビットと1 * kの数、すなわち、(11 * K)%10 ==(1 * K)10%を見つけます。

よく確かに存在する(21 * K)%10 ==(1 * K)%10 ...............

したがって、我々は、すべての(iはkは*)10%(1 <= iが<= 9)、次いで一緒に添加知る必要があります

 

そして、yのを見てする数である、あなたは、特定のコードを見ることができるものを手に入れます!

 

コード:

1の#include <stdio.hの>
 2の#include < ストリング・H>
 3の#include <iostreamの>
 4の#include <アルゴリズム>
 5  使って 名前空間STDを、
6  のconst  int型 MAXN = 15 7 typedefの長い 長いLL。
8  LL V [MAXN]、[MAXN]合計。
9  INT メイン()
 10  {
 11      のLL T。
12      cinを>> トン。
13      一方(t-- 14      {
 15          のLL N、M。
16          CIN >> N >> M。
17   
18          のために(LL i = 1 ; iは= < 9 ++; I)
 19              V [I] =(i *がM)%10、和[I] =和[I- 1 ] + [I] V。
20          であれば(N < M)
 21          {
 22              のprintf(" 0 \ n " );
23              続け;
24          }
 25          N / = M。
26          = M%10 27          LL SUMM = 0 、ANS。
28の          ANS = N / 10 29          LLのQ = N%10 30          // のprintf( "%D%LLD%D \ n"は、N、ANS、Q)。
31          SUMM = ANS *和[ 9 ]。
32          SUMM + = 和[Q]。
33          のprintf(" %I64dの\ n " 、SUMM)。
34      }
 35      リターン 0 36 }
コードの表示

 

おすすめ

転載: www.cnblogs.com/kongbursi-2292702937/p/11519324.html