当前位置: 首页 > news >正文

L2-056 被n整除的n位数 - java

L2-056 被n整除的n位数


语言时间限制内存限制代码长度限制栈限制
Java (javac)400 ms512 MB16KB8192 KB
Python (python3)400 ms256 MB16KB8192 KB
其他编译器400 ms64 MB16KB8192 KB

题目描述:

“被 n n n 整除的 n n n 位数”是这样定义的:记这个 n n n 位数为 a n ⋯ a 2 a 1 a_n \cdots a_2a_1 ana2a1 。首先 a n a_n an 不为 0。从 a n a_n an 开始从左到右扫描每一位数字,前 1 1 1 位数(即 a n a_n an)能被 1 1 1 整除,前 2 2 2 位数 a n a n − 1 a_na_{n-1} anan1 能被 2 整除,以此类推…… 即前 i 位数能被 i i i 整除 ( i = 1 , ⋯ , n ) (i = 1, \cdots, n) i=1,,n

例如 34285 34285 34285 这个 5 5 5 位数,其前 1 1 1 位数 3 3 3 能被 1 1 1 整除;前 2 2 2 位数 34 34 34 能被 2 2 2 整除;前 3 3 3 位数 342 342 342 能被 3 3 3 整除;前 4 4 4 位数 3428 3428 3428 能被 4 4 4 整除;前 5 5 5 位数 34285 34285 34285 能被 5 5 5 整除。所以 34285 34285 34285 是能被 5 5 5 整除的 5 5 5 位数。

本题就请你对任一给定的 n n n,求出给定区间内被 n n n 整除的 n n n 位数。

友情提示:被偶数整除的数字一定以偶数结尾;被 5 5 5 整除的数字一定以 5 5 5 0 0 0 结尾;被 10 10 10 整除的数字一定以 0 0 0 结尾。

输入格式:
输入在一行中给出 3 3 3 个正整数: n ( 1 < n ≤ 15 ) n(1 < n \le 15) n1<n15,以及闭区间端点 a a a b ( 1 ≤ a ≤ b < 10 15 ) b(1 \le a \le b < 10^{15}) b1ab<1015

输出格式:
按递增序输出区间 [ a , b ] [a,b] [a,b] 内被 n n n 整除的 n n n 位数,每个数字占一行。

若给定区间内没有解,则输出 No Solution

输入样例 1:

5 34200 34500

输出样例 1:

34200
34205
34240
34245
34280
34285

输入样例 2:

4 1040 1050

输出样例 2:

No Solution

输出 a ∼ b a \sim b ab 之间所有满足前 i i i 位数能被 i i i 整除的数。


emmmmmmm

搜索

从最高位开始依次找到前 i i i位能被 i i i整除的数,直到填满 n n n位为止。

由于给定的 a , b a,b a,b可能是一个差距极大值,所以需要先替换为 n n n位数的最大最小值。即 a = 10 n − 1 , b = 10 n − 1 a = 10^{n-1}, b=10^n-1 a=10n1,b=10n1


import java.io.*;
import java.util.*;public class Main
{static long n, a, b;static boolean flag = true;// x:当前的数// dep:当前填入的位数static void dfs(long x, int dep){// 填满n位if (dep == n){// 在指定范围内if (a <= x && x <= b){flag = false;out.println(x);}return;}// 依次判断0~9的数是否满足条件for (int i = 0; i <= 9; i ++){// 将当前数插入long res = x * 10 + i;// 判断前i位是否为i的倍数if (res % (dep + 1) == 0) dfs(res, dep + 1);}}public static void main(String[] args) throws IOException{n = sc.nextInt();a = sc.nextLong();b = sc.nextLong();// n位数的最小值long min = (long) (Math.pow(10, n - 1));// 替换a和b的范围a = Math.max(a, min);b = Math.min(b, min * 10 - 1);// 从最高位开始查找,用一个固定值来简化搜索for (long i = a / min; i <= b / min; i ++)dfs(i, 1);if (flag) out.println("No Solution");out.flush();out.close();}static Scanner sc = new Scanner(System.in);static PrintWriter out = new PrintWriter(System.out);}

dfs
dfs


如果有说错的 或者 不懂的 尽管提 嘻嘻

一起进步!!!


闪现

http://www.xdnf.cn/news/874999.html

相关文章:

  • Docker慢慢学
  • unity+ spine切换武器不换皮肤解决方案
  • C#Winform中DevExpress下的datagridview 特定列可编辑,其他列不可编辑
  • “详规一张图”——香港土地利用数据
  • java.sql.BatchUpdateException: Incorrect string value: ‘\xF0\x9F\x91\x91**...‘
  • 面试题小结(真实面试)
  • Java编程常见错误与最佳实践
  • machine_env_loader must have been assigned before creating ssh child instance
  • hadoop集群启动没有datanode解决
  • PyCharm项目和文件运行时使用conda环境的教程
  • Python趣学篇:用数学方程绘制浪漫爱心
  • SpringBoot+Mybatisplus配置多数据源(超级简单!!!!)
  • #Java篇:学习node后端之sql常用操作
  • BBU 电源市场报告:深入剖析与未来展望​
  • 洛谷P1591阶乘数码
  • GO语言---函数命名返回值
  • 嵌入式系统中常用的开源协议
  • 41、响应处理-【源码分析】-自定义MessageConverter
  • [C]深入解析条件式日志宏的设计原理
  • Deepfashion2 数据集使用笔记
  • 2025年五一数学建模竞赛A题-支路车流量推测问题详细建模与源代码编写(一)
  • 洛谷 单源最短路径 Dijkstra算法+优先队列
  • 点云数据去噪(Point Cloud Processing Toolbox)
  • C++——智能指针 shared_ptr
  • 小黑黑日常积累:dataclass的简单使用
  • AtCoder解析大全
  • 在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南
  • 基于 qiankun + vite + vue3 构建微前端应用实践
  • 长参考帧LTR
  • 前端八股之JS的原型链