洛谷链接&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. C# 【思路】分享 构造可进行单元测试的波形数据

    需要单元测试自己写的识别特殊波峰的算法,所以必须构造波形数据. 一开始是自己在控件上手绘波形,虽然这种方便,但是能绘制的点太少,每次手画显得麻烦. 过后,又采用随机数构造波峰,这种虽说能构造很多点,产 ...

  2. skipped: maximum number of running instances reached (1)

    apscheduler定时任务报错skipped: maximum number of running instances reached (1) 原因是默认max_instances最大定时任务是1 ...

  3. MyBatis日志模块源码分析

    MyBatis源码的logging包下是日志模块的相关实现,Mybatis日志模块通过适配器模式和代理模式优雅的实现了SQL日志的输出功能. 一. 适配器模式实现了MyBatis对第三方日志框架的适配 ...

  4. CSS——基本选择器

    例子: <head> <meta charset="UTF-8"> <title>Title</title> <style&g ...

  5. 在Rainbond中一键部署高可用 EMQX 集群

    本文描述如何通过云原生应用管理平台 Rainbond 一键安装高可用 EMQX 集群.这种方式适合不太了解 Kubernetes.容器化等复杂技术的用户使用,降低了在 Kubernetes 中部署 E ...

  6. 使用python在k8s中创建一个pod

    要在Kubernetes (k8s) 中使用Python创建一个Pod,你可以使用Kubernetes Python客户端库(通常称为kubernetes或kubernetes-client).以下是 ...

  7. kettle从入门到精通 第十六课 kettle 映射 (子转换)02

    1.上节讲的子映射里面只有一个转换(类似一个java类里面只有一个公共方法),本次讲解的有两个,实际上可以有任意多个(一个java类里面有多个公共方法).两个转换分别计算x+y和x*y. 2.命名参数 ...

  8. koishi-跨平台、可扩展、高性能的机器人

    koishi 介绍 Koishi 是一个跨平台.可扩展.高性能的聊天机器人框架. 它的名字和图标设计来源于东方 Project 中的角色 古明地恋 (Komeiji Koishi).古明地恋是一个会做 ...

  9. python pika rabbitmq demo

    import pika import json # https://www.cnblogs.com/zhaohuaxishi/p/12107392.html # https://www.cnblogs ...

  10. PHP 程序员转 Go 语言的经历分享

    大家好,我是码农先森. 之前有朋友让我分享从 PHP 转 Go 的经历,这次它来了.我主要从模仿.进阶.应用这三个方面来描述转 Go 的经历及心得.模仿是良好的开端,进阶是艰难的成长,应用是认知的提升 ...