2015 PWTC D5 D(简单推导)

2015 PWTC D5 D

1 ≤ n ≤ 1 0 18 1\le n\le 10^{18} 1n1018,现有面值 1 , 5 , 10 , 25 1,5,10,25 1,5,10,25 的硬币,求有多少种不同的取法使得硬币的面值和正好为 n n n

答案对 1 0 9 + 7 10^9+7 109+7 取模。

思路及解法

考虑 1 1 1 是所有其他硬币的公因数,可以先把 1 1 1 填充 n n n 个,然后用其他面值的硬币替代 1 1 1

那么用 ( i , j , k ) (i,j,k) (i,j,k) 枚举 25 , 10 , 5 25,10,5 25,10,5 的个数, ( i , j , k ) (i,j,k) (i,j,k) 合法(即 25 i + 10 j + 5 k ≤ n 25i+10j+5k\le n 25i+10j+5kn),则该三元组对答案贡献加一。

n n n 范围巨大,考虑对每一个 i i i 都能直接统计出有多少种 j , k j,k j,k 合法,记作 a n s i ans_i ansi
a n s i = ( ⌊ n − 25 i 5 ⌋ + 1 ) + ( ⌊ n − 25 i 5 ⌋ + 1 − 10 × 1 5 ) + ( ⌊ n − 25 i 5 ⌋ + 1 − 10 × 2 5 ) + . . . . . . ans_i=(\lfloor \frac{n-25i}{5}\rfloor+1) + (\lfloor \frac{n-25i}{5}\rfloor+1-\frac{10\times 1}{5}) + (\lfloor \frac{n-25i}{5}\rfloor+1-\frac{10\times 2}{5})+...... ansi=(5n25i+1)+(5n25i+1510×1)+(5n25i+1510×2)+......
n i ′ = ⌊ n − 25 i 5 ⌋ n'_i=\lfloor \frac{n-25i}{5}\rfloor ni=5n25i,则
a n s i = ( n i ′ + 1 ) + ( n i ′ − 1 ) + ( n i ′ − 3 ) + . . . . . . ans_i=(n'_i+1)+ (n'_i-1)+(n'_i-3)+...... ansi=(ni+1)+(ni1)+(ni3)+......

考虑 n i + 1 ′ = n i ′ − 5 n'_{i+1}=n'_i-5 ni+1=ni5,有
a n s i + 1 + a n s i = ( n i ′ + 1 ) + ( n i ′ − 1 ) + ( n i ′ − 3 ) + ( n ’ i − 4 ) + . . . + 1 = ( n i ′ + 1 ) + ( n i ′ − 1 ) + ( n ’ i − 2 ) ( n i ′ − 3 ) 2 = ( n i ′ + 1 ) + ( n i ′ − 1 ) + ( n ’ i − 3 ) + ( n ’ i − 3 ) 2 2 \begin{aligned} ans_{i+1}+ans_i &= (n'_i+1)+ (n'_i-1)+(n'_i-3)+(n’_i-4)+...+1\\ &= (n'_i+1)+ (n'_i-1)+\frac{(n’_i-2)(n'_i-3)}{2}\\ &= (n'_i+1)+ (n'_i-1)+\frac{(n’_i-3)+(n’_i-3)^2}{2}\\ \end{aligned} ansi+1+ansi=(ni+1)+(ni1)+(ni3)+(ni4)+...+1=(ni+1)+(ni1)+2(ni2)(ni3)=(ni+1)+(ni1)+2(ni3)+(ni3)2
那么只需要求三个等差数列和一个等差数列平方和即可。

关于等差数列 a i = d × i + b a_i=d\times i+b ai=d×i+b,其平方和可表示为(该式子可由 1 1 1 ~ n n n 的平方和推导)
∑ i = 0 n a i 2 = ( ( n + 1 ) × a 0 × a n ) + ( n × ( n + 1 ) × ( 2 × n + 1 ) × d 2 ) 6 \sum_{i=0}^{n}a_i^2 = ((n+1)\times a_0\times a_n)+\frac{(n\times (n+1)\times (2\times n+1)\times d^2)}{6} i=0nai2=((n+1)×a0×an)+6(n×(n+1)×(2×n+1)×d2)
根据上述式子则有:
∑ i = 0 n 25 a n s i = ( n 0 ′ + 1 ) + ( n 0 ′ − 1 ) + ( n ’ 0 − 3 ) + ( n ’ 0 − 3 ) 2 2 + ( n 0 ′ − 10 + 1 ) + ( n 0 ′ − 10 − 1 ) + ( n ’ i − 10 − 3 ) + ( n ’ i − 10 − 3 ) 2 2 + . . . . . . = ( ( n ’ 0 + 1 ) % 10 ) ∗ ( ⌊ n ’ 0 + 1 10 ⌋ + 1 ) + 10 ∗ ( ( ⌊ n ’ 0 + 1 10 ⌋ ) 2 + ⌊ n ’ 0 + 1 10 ⌋ ) 2 + ( ( n ’ 0 − 1 ) % 10 ) ∗ ( ⌊ n ’ 0 − 1 10 ⌋ + 1 ) + 10 ∗ ( ( ⌊ n ’ 0 − 1 10 ⌋ ) 2 + ⌊ n ’ 0 − 1 10 ⌋ ) 2 + 1 2 [ ( ( n ’ 0 − 3 ) % 10 ) ∗ ( ⌊ n ’ 0 − 3 10 ⌋ + 1 ) + 10 ∗ ( ( ⌊ n ’ 0 − 3 10 ⌋ ) 2 + ⌊ n ’ 0 − 3 10 ⌋ ) 2   + ( ( ⌊ n ’ 0 − 3 10 ⌋ + 1 ) ∗ ( ( n ’ 0 − 3 ) % 10 ) ∗ ( n ’ 0 − 3 ) )   + ( ⌊ n ’ 0 − 3 10 ⌋ ∗ ( ⌊ n ’ 0 − 3 10 ⌋ + 1 ) ∗ ( 2 ∗ ⌊ n ’ 0 − 3 10 ⌋ + 1 ) ) ∗ 1 0 2 6 ] \begin{aligned} &\sum_{i=0}^{\frac{n}{25}} ans_i\\ =&(n'_0+1)+ (n'_0-1)+\frac{(n’_0-3)+(n’_0-3)^2}{2}\\ +&(n'_0-10+1)+ (n'_0-10-1)+\frac{(n’_i-10-3)+(n’_i-10-3)^2}{2}\\ +&......\\ \\ =&((n’_0+1)\%10)*(\lfloor\frac{n’_0+1}{10}\rfloor+1)+10*\frac{((\lfloor\frac{n’_0+1}{10}\rfloor)^2+\lfloor\frac{n’_0+1}{10}\rfloor)}{2}\\ +&((n’_0-1)\%10)*(\lfloor\frac{n’_0-1}{10}\rfloor+1)+10*\frac{((\lfloor\frac{n’_0-1}{10}\rfloor)^2+\lfloor\frac{n’_0-1}{10}\rfloor)}{2}\\ +&\frac{1}{2}\big[((n’_0-3)\%10)*(\lfloor\frac{n’_0-3}{10}\rfloor+1)+10*\frac{((\lfloor\frac{n’_0-3}{10}\rfloor)^2+\lfloor\frac{n’_0-3}{10}\rfloor)}{2}\\ \ &+((\lfloor\frac{n’_0-3}{10}\rfloor+1)*((n’_0-3)\%10)*(n’_0-3))\\ \ &+\frac{(\lfloor\frac{n’_0-3}{10}\rfloor*(\lfloor\frac{n’_0-3}{10}\rfloor+1)*(2*\lfloor\frac{n’_0-3}{10}\rfloor+1))*10^2}{6}\big] \end{aligned} =++=++  i=025nansi(n0+1)+(n01)+2(n03)+(n03)2(n010+1)+(n0101)+2(ni103)+(ni103)2......((n0+1)%10)(10n0+1+1)+102((10n0+1)2+10n0+1)((n01)%10)(10n01+1)+102((10n01)2+10n01)21[((n03)%10)(10n03+1)+102((10n03)2+10n03)+((10n03+1)((n03)%10)(n03))+6(10n03(10n03+1)(210n03+1))102]

那么这个式子就是答案。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值