题目链接

题目

题目描述

小a有一个n位的数字,但是它忘了各个位上的数是什么,现在请你来确定各个位上的数字,满足以下条件:

设第i位的数为ai,其中a1为最高位,an为最低位,K为给定的数字

  1. 不含前导0
  2. \(\sum_{i = 2}^n (a_i - a_{i - 1}) = K\)

请你求出满足条件的方案数

输入描述

两个整数N, K

若存在无解的情况,请输出0

输出描述

一个整数表示答案,对10^9 + 7取模

示例1

输入

2 3

输出

6

说明

满足条件的数有:14, 25, 36, 47, 58, 69

示例2

输入

2 -3

输出

7

说明

满足条件的数有:41, 52, 63, 74, 85, 96, 30

示例3

输入

4 3

输出

600

说明

可能的方案有:1234, 1334

示例4

输入

4 -3

输出

700

备注

对于30%的数据:n, |k| = 5

对于60%的数据:n, |k| ≤ 1000

对于100%的数据:n, |k| ≤ 10^13

保证n > 1

题解

知识点:组合数学。

简化一下条件:\(\displaystyle \sum_{i = 2}^n (a_i - a_{i - 1}) = a_n - a_1 = K\) ,其他位没有限制。

因为不能有前导 \(0\) ,因此 \(a_1 \in [1,9]\) ,同时 \(a_n = a_1 + K \in [0,9]\) ,因此 \(a_1 \in [-K,9-K]\) ,我们取交集即可。

时间复杂度 \(O(\log n)\)

空间复杂度 \(O(1)\)

代码

#include <bits/stdc++.h>
using namespace std;
using ll = long long; const int P = 1e9 + 7;
int qpow(int a, ll k) {
int ans = 1;
while (k) {
if (k & 1) ans = 1LL * ans * a % P;
k >>= 1;
a = 1LL * a * a % P;
}
return ans;
}
/// 快速幂,O(logk),底数越大速度慢的越快 int main() {
std::ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
ll n, k;
cin >> n >> k;
ll l = max(-k, 1LL), r = min(9 - k, 9LL);
cout << max(r - l + 1, 0LL) * qpow(10, n - 2) % P << '\n';
return 0;
}

NC18985 数字权重的更多相关文章

  1. [NC189A]数字权重

    题目大意:有一个$n$位的数,设第$i$位为$a_i$(最高位为$a_1$).问满足$(\sum\limits_{i=2}^n(a_i-a_{i-1}))==k$的数的个数(不含前导零) 题解:发现$ ...

  2. CSS选择器的优先级及权重问题【CSS核心问题】及其它属性

    1.CSS选择器优先级:    !important >行间样式> id >class和属性选择器>标签选择器>通配符选择器        注意:[初级工程师水平] 2. ...

  3. 探索 Linux 内存模型--转

    引用:http://www.ibm.com/developerworks/cn/linux/l-memmod/index.html 理解 Linux 使用的内存模型是从更大程度上掌握 Linux 设计 ...

  4. [LeetCode] Similar RGB Color 相似的红绿蓝颜色

    In the following, every capital letter represents some hexadecimal digit from 0 to f. The red-green- ...

  5. Python_Mix*匿名函数,sorted,filter,map,递归函数,二分法查找

    lambda匿名函数(函数名统一都叫lambda) 为了解决简单的需求而设计的一句话函数 语法: lambda 参数 返回值 n = lambda a,b: max(a,b) ret = n(9,4) ...

  6. 机器学习入门08 - 表示法 (Representation)

    原文链接:https://developers.google.com/machine-learning/crash-course/representation/ 机器学习模型不能直接看到.听到或感知输 ...

  7. Nowcoder | [题解-N189]牛客OI赛制测试赛3

    这场说实话确实水(逃*1),表示差一点就AK了(逃*2),然而被卡两个特判的我\(ssfd\)...\(qwq\) 表示这是第一次发整场比赛的题解...还请各位大佬原谅我太蒻写的垃圾啊\(qwq\). ...

  8. python 内置函数(二) 进阶函数 递归内容及二分法查找 知识点

    1,lambda:  匿名函数 2.sorgted()  排序函数 3,filter()   过滤函数 筛选 4,map()  映射函数 5.递归 6.二分法 一. 匿名函数: lambda lamb ...

  9. 牛客OI赛制测试赛3游记

    A - 数字权重 题目大意: 一个\(n\)位的数字.设第\(i\)位的数为\(a_i\),其中\(a_1\)为最高位,\(a_n\)为最低位,\(k\)为给定的数字.求同时满足满足以下两个条件的数的 ...

  10. 牛客OI赛制测试赛3 解题报告

    前话: 话说考试描述:普及难度. 于是想在这场比赛上涨点信心. 考出来的结果:Point:480     Rank:40 然而同机房的最好成绩是 510. 没考好啊!有点炸心态,D题一些细节没有注意, ...

随机推荐

  1. centos 安装python3导致yum报错

    centos yum报错 File "/usr/bin/yum", line 30 except KeyboardInterrupt, e: 报错: 报错一: File " ...

  2. Angular系列教程之DOM操作

    .markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...

  3. [转帖]美国出口管制法律制度及中国企业风险防范——EAR核心内容解读

    http://bzy.scjg.jl.gov.cn/wto/zszc/myxgzs/202202/t20220221_636006.html 发布时间:2022-01-18 一.<美国出口管理条 ...

  4. [转帖]Linux命令之——rsync

    文章目录 1 rsync是干什么用的 2 rsync和scp有什么区别 3 rsync简单用法介绍 rsync四种工作方式 1. 本地文件系统上实现同步 2. 本地主机使用远程shell和远程主机通信 ...

  5. [转帖]Kafka Dashboard

    https://grafana.com/grafana/dashboards/18276-kafka-dashboard/ Kafka resource usage and consumer lag ...

  6. shell的date的部分处理--需要记住..

    在Linux中,可以使用date命令获取日期, date 获取当前完整日期 date --date="3 days ago" 获取3天前的完整日期 date --date=&quo ...

  7. [转帖] Strace的介绍与使用

    https://www.cnblogs.com/skandbug/p/16264609.html Strace简介 strace命令是一个集诊断.调试.统计于一体的工具,常用来跟踪进程执行时的系统调用 ...

  8. [转帖]【dperf系列-5】使用dperf进行性能测试(初级)

    https://zhuanlan.zhihu.com/p/451341132 dperf是一款高性能的开源网络压力测试仪,是Linux基金会旗下的DPDK官方生态项目.本文介绍如利用dperf在两台物 ...

  9. 基于eBPF的微服务网络安全(Cilium 1)

    基于eBPF的微服务网络安全 翻译自:Network security for microservices with eBPF 一些开源的kubernetes工具已经开始使用eBPF,这些工具大多数与 ...

  10. 前端 Git-Hooks 工程化实践

    前言 前段时间,部门的前端项目迁移到 monorepo 架构,笔者在其中负责跟 git 工作流相关的事情,其中就包括 git hooks 相关的工程化的实践.用到了一些常用的相关工具如 husky.l ...