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

判断一个用字符串表达的数字是否可以被整除

一.问题引出

当一个数字很大的时候,我们常用字符串进行表达,(超过了int和long等数据类型可以存储的最大范围),但是这个时候我们该如何判断他是否可以被另一个数整除呢?

这个时候我们不妨这样来考虑问题,每次将前边求模之后的数保存下来,然后乘以10和这一位的数字进行相加的操作,一直重复这个步骤,知道最后一位,观察是否这个数字加之前剩余可以被整除,这就类似于我们小学做的除法的算式计算和一样

例如这样:

例如求数字"98244353"是否可以被3整除

第一位:9%3=0,left=0;

第二位:8%3=2,left=2;

第三位:2*10+2=22%3=1,left=1;

第四位:1*10+4=14%3=2,left=2;

第五位:2*10+4=24%3=0,left=0;

第六位3%3=0,left=0;

第七位4%3=1,left=1;

第八位:1*10+3=13%3=1,left=1;

所以不能被整除

二.代码实现

    public boolean isDivide(String num, int k) {long left = 0;for (int i = 0; i < num.length(); ++i) {left = (left * 10 + num.charAt(i) - '0') % k;}return left == 0;}

 三.找出字符串的可整除数组

1.题目描述

给你一个下标从 0 开始的字符串 word ,长度为 n ,由从 09 的数字组成。另给你一个正整数 m

word可整除数组 div  是一个长度为 n 的整数数组,并满足:

  • 如果 word[0,...,i] 所表示的 数值 能被 m 整除,div[i] = 1
  • 否则,div[i] = 0

返回 word 的可整除数组。

力扣:力扣

2.问题分析

其实这个问题更好的解释上面的问题,如果这个位置的求余等于0,那么这里就是可以被整除的数字,一直往后叠加计算即可.

3.代码实现

    public int[] divisibilityArray(String word, int m) {int n = word.length();int[] div = new int[n];long left = 0;for (int i = 0; i < n; ++i) {int num = word.charAt(i) - '0';left = (left * 10 + num) % m;if (left == 0) {div[i] = 1;}}return div;}

http://www.lryc.cn/news/22722.html

相关文章:

  • 这是一款值得开发人员认真研究的软件,数据库优化,应用服务器安全优化...
  • 栈与队列小结
  • SpringBoot整合(五)HikariCP、Druid数据库连接池—多数据源配置
  • ShardingSphere水平、垂直分库、分表和公共表
  • 《分布式技术原理与算法解析》学习笔记Day24
  • 强化学习RL 02: Value-based Reinforcement Learning
  • 08_MySQL聚合函数
  • 「TCG 规范解读」词汇表
  • 第三阶段-03MyBatis 中使用XML映射文件详解
  • 从0开始学python -41
  • 如何将Google浏览器安装到D盘(内含教学视频)
  • 三战阿里测试岗,成功上岸,面试才是测试员涨薪真正的拦路虎...
  • Java代码弱点与修复之——ORM persistence error(对象关系映射持久错误)
  • 原始GAN-pytorch-生成MNIST数据集(原理)
  • Vue下载安装步骤的详细教程(亲测有效) 1
  • [Android Studio] Android Studio生成数字证书,为应用签名
  • 应用IC 卡继续教育网络管理系统前后影响因素比较
  • Clickhouse学习(一):MergeTree概述
  • Windows离线安装rust
  • Android与flutter混合开发
  • Linux和C语言的学习方法你真的知道吗?
  • 代码随想录day42
  • 【笔记】两台1200PLC进行S7 通信(1)
  • 统一网关Gateway
  • 6、kubernetes(k8s)安装
  • python-批量下载某短视频平台音视频标题、评论、点赞数
  • 【数据结构与算法】单链表的增删查改(附源码)
  • 华为OD机试 - 回文字符串
  • C语言太简单?这14道C语言谜题,你能答对几个
  • Benchmark测试——fio——源码分析