洛谷链接&Atcoder 链接

本篇题解为此题较简单做法较少码量,并且码风优良,请放心阅读。

题目简述

求满足以下条件的小于 \(10 ^ n\) 数最大是多少?

  • 每一位数字均相同;

  • 是 \(m\) 的倍数。

数据范围:\(1\le n\le 10^5\),\(1\le m\le 10^9\)。

思路

首先每位数字都相同很好满足,仅需枚举 \(n\) 位后,枚举每位的数字 \(1 \sim 9\),注意不包含 \(0\),因为最高位不能为 \(0\)。

接着想要满足是 \(m\) 的倍数,可以想到类似动态转移的思路,定义二维数组 \(mp[i][j]\) 表示在有 \(i\) 位数的情况下每位都为 \(j\) 的数除以 \(M\) 的余数。在枚举中实时更新答案,因为位数是从 \(1 \sim N\),每位是从 \(1 \sim 9\),所以存储的答案一定为最大的解

代码实现

经过以上分析及一些数组设计,很容易即可得到代码。首先我们先看一下 \(mp\) 数组的处理

for(int i = 1; i <= n; i ++)
for(int j = 1; j <= 9; j ++) {
mp[i][j] = (mp[i - 1][j] * 10 + j) % m;
if(!mp[i][j]) ans1 = i, ans2 = j;
}

可以看到第三行对于 \(mp\) 数组状态的转移

\[mp_{i,j} \gets mp_{i-1,j}
\]

可以从 \(i-1\) 位都是 \(j\) 的余数转移过来,根据同余的相关知识很容易推出转移方程式

\[mp_{i,j} \gets (mp_{i-1,j} \times 10 + j) \% M
\]

解决状态转移后需更新答案,这一部分很简单就不在赘述。接着需要在处理 \(mp\) 数组后,特判 \(-1\) 的情况:

if(!ans1 || !ans2) {
cout << "-1\n";
return 0;
}

这样整体代码框架就完成了。

AC code

#include<iostream>
using namespace std; long long n, m, mp[100005][15];
long long ans1, ans2; int main() {
cin >> n >> m;
for(int i = 1; i <= n; i ++)
for(int j = 1; j <= 9; j ++) {
mp[i][j] = (mp[i - 1][j] * 10 + j) % m;
if(!mp[i][j]) ans1 = i, ans2 = j;
}
if(!ans1 || !ans2) {
cout << "-1\n";
return 0;
}
for(int i = 1; i <= ans1; i ++) cout << ans2;
return 0;
}

提交记录

\[\text{The End!}
\]

AT_arc149_a 题解的更多相关文章

  1. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  2. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  3. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  4. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  5. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  6. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  7. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  8. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  9. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

  10. JSOI2016R3 瞎BB题解

    题意请看absi大爷的blog http://absi2011.is-programmer.com/posts/200920.html http://absi2011.is-programmer.co ...

随机推荐

  1. IIS 部署 Python 环境

    1.安装IIS 勾选特殊CGI程序2.Python 环境 (环境变量配置)3.如果没有pip命令 先下载安装pip python setup.py install4.pip install wfast ...

  2. Ceph 架构以及部署

    目录 Ceph架构 存储类型 为什么用到Ceph? 1. NFS 2. MooseFS MooseFS瓶颈 3. GlusterFS 4. Ceph Ceph的组件 Ceph部署 前期准备 1.1 修 ...

  3. ThreadLocal原理详解——终于弄明白了ThreadLocal

    目录 概述 API介绍 ThreadLocal的理解 ThreadLocal的原理分析 总结 概述 在java学习生涯中可能很多人都会听到ThreadLocal变量,从字面上理解ThreadLocal ...

  4. Java自增

    Java自增 本文分为以下部分: 栗子 栗子解释 来点复杂的 字节码解读 总结 栗子 java存在一种神奇的操作符,++,自增1,但是经常分不清楚 i++ 和++i 两者的区别,虽然最后结果可能都是 ...

  5. Objetive-C 属性和线程安全

    一.接上一篇<nonatomic 带来的线程安全问题>,这里继续详细讨论属性各种类型与线程安全的关系 1)影响线程安全的属性类型,nonatomic,atomic,weak @proper ...

  6. github无法访问的问题

    Windows10 通过nslookup命令获取GitHub域名服务器地址,然后ping该地址 nslookup github.com ping 域名服务器地址 发现20.205.243.166能稳定 ...

  7. 在mobaxten上使用scala报错

    查看报错信息 [ERROR] Failed to construct terminal; falling back to unsupported java.io.IOException: Cannot ...

  8. Github Fork仓库的冲突与同步管理

    在使用Github进行协作开发时,fork一个仓库并在本地进行开发是常见的工作流程.然而,当源仓库(上游仓库)有了更新时,如何同步这些更新并解决可能的合并冲突是一个关键问题.本文将详细介绍如何管理这些 ...

  9. vue3使用表格el-table-infinite-scroll.js:18 Uncaught (in promise) Error: [el-table-infinite-scroll]: .el-scrollbar__wrap element not found.

    先看下表格里面有没有这个el-scrollbar__wrap class类 没有的话升级一下element-plus到最新的就行 你可以先查看element-plus的版本 npm view elem ...

  10. C# .NET Framework EXCEL NPOI EOF in header

    实例化时异常: EOF in header 错误代码: try { workBook = new HSSFWorkbook(file); } catch { try { workBook = new ...