zoukankan      html  css  js  c++  java
  • LG P1587 [NOI2016]循环之美

    Description

    牛牛是一个热爱算法设计的高中生。在他设计的算法中,常常会使用带小数的数进行计算。牛牛认为,如果在 $k$ 进制下,一个数的小数部分是纯循环的,那么它就是美的。现在,牛牛想知道:对于已知的十进制数$n$和 $m$,在 $k$ 进制下,有多少个数值上互不相等的纯循环小数,可以用分数$frac xy$ 表示,其中$1 leq x leq n,1 leq y leq m$,且 $x,y$是整数。一个数是纯循环的,当且仅当其可以写成以下形式:

    $$a. dot{c_1} c_2 c_3 dots c_{p-1} dot{c_p}$$

    其中,$a$ 是一个整数,$p geq 1$;对于 $1 leq i leq p$,$c_i$是 $k$ 进制下的一位数字。

    例如,在十进制下,$0.45454545……=0.dot{4}dot{5}$是纯循环的,它可以用 $frac {5}{11}$ 、$frac{10}{22}$等分数表示;在十进制下,$0.16666……=0.1dot{6}$ 则不是纯循环的,它可以用 $frac 16$等分数表示。需要特别注意的是,我们认为一个整数是纯循环的,因为它的小数部分可以表示成 $0$的循环或是 $k-1$ 的循环;而一个小数部分非 $0$ 的有限小数不是纯循环的。

    Solution

     假设 $frac{x}{y}$的循环节长度为 $l$

    $Rightarrow [frac{xk^l}{y}]=[frac{x}{y}]$

    中括号表示小数部分

    $$ frac{xk^l}{y}-lfloorfrac{xk^l}{y} floor=frac{x}{y}-lfloorfrac{x}{y} floor$$

    $$ xk^l-lfloorfrac{xk^l}{y} floor*y=x-lfloorfrac{x}{y} floor*y $$

    $$ xk^lequiv xmod y $$

    $$ k^lequiv1mod y $$

    $$ (k,y)=1 $$

    要求最简分数,所以 $(x,y)=1$

    所以所求为

    $$ Ans=sum_{i=1}^nsum_{j=1}^m[(i,j)=1][(j,k)=1] $$

    egin{align}
    f(n,m,k) & =sum_{i=1}^nsum_{j=1}^m[(i,j)=1][(j,k)=1]\
    & =sum_{i=1}^nsum_{j=1}^m[(i,j)=1]sum_{d|(j,k)}mu(d) \
    & =sum_{i=1}^nsum_{jd=1}^m[(i,jd)=1]sum_{d|jd,d|k}mu(d)\
    & =sum_{d|k}mu(d)sum_{i=1}^nsum_{j=1}^{frac{m}{d}}[(i,jd)=1]\
    & =sum_{d|k}mu(d)sum_{i=1}^nsum_{j=1}^{frac{m}{d}}[(i,j)=1][(i,d)=1]\
    & =sum_{d|k}mu(d)f(frac{m}{d},n,d)
    end{align}

     处理边界,数论分块套杜教筛即可

    [NOI2016]循环之美
  • 相关阅读:
    Idea快捷键
    基于LinkedHashMap实现一个基于LRU算法的缓存设计
    SpringBoot整合Mybatis
    MyBatis Generator自动生成代码
    java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more
    Dubbo的异步调用
    Jackson的ObjectMapper的简单用法及语法
    mysql实例代码
    6. Z 字形变换
    13. 罗马数字转整数
  • 原文地址:https://www.cnblogs.com/JDFZ-ZZ/p/13837084.html
Copyright © 2011-2022 走看看