BZOJ1257 [CQOI2007]および[法律]の残り

ZCRとyyは順番に嘲笑の多くで、IQが減少感じました。T_T

MODは、第一整数除算に分かれ、それはSigma_ {i = 1} ^ {N} \ $ NK-iが\ lfloor \ FRAC {K} {I} \ rfloor $を*です。その後ろにシーク。

そして、$ \ lfloorの\のFRAC {K} {I} \ rfloor $が連続して単調に成長して発見しました。$第X $のため、$ [X、\ lfloor \ FRAC {K} {\ lfloorの\のFRAC {K} {I} \ rfloor} \ rfloor]同じサプライヤー内$。あなたは感じることができます。

これは、取得するための法律を見つけることです、そしてQWQを許可しません。私は蓄積のこの期間を$各$を乗じた商ように、各セグメント。

複雑さは、私は当量の\のSQRT {K} $ \ SQRT {K} $ $シード供給を持っているが\ $です。$ I \ GEQ \ SQRT {K}とサプライヤー未満$ \またSQRT {K} $の$時間まで$ \ sqrtの{K} $の種。このように複雑さがルートです。


WA:LONGLONGに宣告することが正しいことと間隔のすべての点は、$ N $を超えています。

1の#include <iostreamの>
 2の#include <cstdioを>
 3の#include <CStringの>
 4の#include <アルゴリズム>
 5の#include <cmath>
 6  使って 名前空間STD。
7 typedefの長い 長いLL。
8テンプレート<型名T>インラインT _min(TA、TB){ 戻り A <Bを?:B;}
 9テンプレート<型名T>インラインT(T&読み取りX)を、{
 10      、X = 0int型の F = 0 ; char型の C; しばらく(!isdigit(C = getchar関数()))であれば(C ==' - ')、F = 1 11      一方(isdigit(c)参照)、X = X * 10 +(C&15)、C = GETCHAR()。返す fはX = - ?X:X;
12  }
 13インラインLL和(LL I、LLのJ){ リターン(iはJ + 1)*(J-I + 1)/ 2 ;}
 14の LLのANS、N、K。
15  
16  INTメイン(){ // freopenは( "test.in"、 "R"、STDIN)。// freopenは( "test.outに"、 "W"、STDOUT)。
17      リード(N)、(k)を読み出す; ANS = N * K(N> K)&&(N = K)。
18      のために(LL Iレジスタ= 1、R = 0 ; iが<= N; I = R + 1)ans- = SUM(I、R = _min(N、K /(K / I)))*(K / I)。
19      リターンのprintf(" %LLDする\ n "、ANS)、0 20 }
コードの表示

おすすめ

転載: www.cnblogs.com/saigyouji-yuyuko/p/11469526.html
おすすめ