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

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.lryc.cn/news/2399582.html

相关文章:

  • 传统足浴行业数字化转型:线上预约平台的技术架构与商业逻辑
  • Java-IO流之字节输入流详解
  • 从OCR到Document Parsing,AI时代的非结构化数据处理发生了什么改变?
  • 【C/C++】入门grpc的idl
  • 【Java实用工具类】手撸SqlBuilder工具类,优雅拼接动态SQL,MyBatisPlus同款风格!
  • 宇树科技更名“股份有限公司”深度解析:机器人企业IPO前奏与资本化路径
  • Inno Setup 安装向导各个页面详解
  • 转战web3远程工作的英语学习的路线规划
  • OPENCV重点结构体Mat的讲解
  • Java 创建线程池的几种方式
  • 【趣味Html】第11课:动态闪烁发光粒子五角星
  • AnyIO Event:异步编程中的同步利器
  • CFTel:一种基于云雾自动化的鲁棒且可扩展的远程机器人架构
  • Educational Codeforces Round 179 (Rated for Div. 2)
  • 完成一个可交互的k8s管理平台的页面开发
  • 多线程编程技术解析及示例:pthread_cond_timedwait、pthread_mutex_lock 和 pthread_mutex_trylock
  • vue实现点击单选或者多选模式
  • Windows系统工具:WinToolsPlus 之 SQL Server 日志清理
  • 在Windows11上安装 Ubuntu WSL
  • 嵌入式Linux之RK3568
  • Elasticsearch的插件(Plugin)系统介绍
  • 提取 PDF 文件中的文字以及图片中的文字
  • JavaScript性能优化实战技术
  • LeetCode 热题 100 739. 每日温度
  • 网页前端开发(基础进阶3--Vue)
  • tryhackme——Abusing Windows Internals(进程注入)
  • 【游戏科学】游戏开发中数学算法的核心与应用
  • 【Day44】
  • 基于 Alpine 定制单功能用途(kiosk)电脑
  • 知识图谱系统功能实现,技术解决方案,附源码