题目链接

题目

题目描述

小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. spring--JDK动态代理的实现原理

    JDK 动态代理的实现原理涉及到 Java 的反射机制.它允许在运行时动态创建一个代理类,这个代理类实现了一组接口,并将所有方法调用转发到一个 InvocationHandler 实例.下面是 JDK ...

  2. 你不知道的JavaScript APIs

    前言 在本文中,将介绍一些鲜为人知但却非常有用的API,如: Page Visibility API Web Share API Broadcast Channel API International ...

  3. java - 冒泡排序求最值

    public class Bubble3 { public static void main(String[] args) { int[] arr; arr = new int[]{2,3,6,1}; ...

  4. [转帖]CENTOS6.5 没有/LIB64/LIBFUSE.SO.2的问题

    yum install fuse-libs

  5. [转帖]jmeter实现不写代码把测试结果存入execl

    这里使用数据库作为中间件来实现不写代码就把测试结果存入execl,下面是步骤 1.新建一个setup线程组用来设置数据库连接信息和新建数据库,如下图所示,我们使用sqlite数据库来存储信息,因为不需 ...

  6. [转帖]rsar - Extract data from plain-text sar files

    sar -A -t -f /tmp/sa11 >/tmp/sar11 https://github.com/ryran/rsar When dealing with sysstat sar da ...

  7. 【转帖】bpftrace 指南

    文章目录 0. bpftrace 0.1 bpftrace组件 0.2 bpftrace 帮助信息 0.3 bpftrace 工具速览表 0.4 bpftrace 探针 0.4.1 tracepoin ...

  8. [转帖]Linux下使用 ipset 封大量IP及ipset参数说明

    https://www.cnblogs.com/xiaofeng666/p/10952627.html Linux使用iptables封IP,是常用的应对网络攻击的方法,但要封禁成千上万个IP,如果添 ...

  9. [转帖]从v8到v9,Arm服务器发展之路

    https://zhuanlan.zhihu.com/p/615344155   01 ARM:3A大作 将 CPU 的设计与制造相分离的代工模式,给 AMD 提供了高度的灵活性.第二.三代 EPYC ...

  10. Oracle12c(未更新任何补丁) 使用compression=all 参数导出之后导入失败

    1. 最近使用Oracle12c 进行相关的测试工作, 平台linux 和 windows 都有一个问题 备份恢复使用的 compression=all 时导入数据库不管是oracle12c还是 or ...