题目 1074: 数字整除 题解
发布日期:2021-04-30 21:04:25 浏览次数:90 分类:精选文章

本文共 1279 字,大约阅读时间需要 4 分钟。

要解决这个问题,我们需要判断给定的大整数是否是17的倍数。方法是将其个位数字去掉,然后从剩下的数中减去个位数的5倍,检查差值是否是17的倍数。

方法思路

  • 读取输入:使用Scanner读取输入数据,处理每一行,直到读取到"0"结束。
  • 分割数字:将每个数字分割为个位数字和剩余的部分。
  • 计算差值:将剩余部分转换为大整数,减去个位数字的5倍。
  • 模运算:检查差值是否是17的倍数,通过模17的结果来判断。
  • 输出结果:如果差值是17的倍数,输出1,否则输出0。
  • 解决代码

    import java.math.BigInteger;import java.util.Scanner;public class Main {    public static void main(String[] args) {        Scanner sr = new Scanner(System.in);        BigInteger b = BigInteger.valueOf(17);        while (sr.hasNext()) {            String str = sr.nextLine();            if ("0".equals(str)) {                break;            }            String dStr = str.substring(0, str.length() - 1);            char lastChar = str.charAt(str.length() - 1);            BigInteger d = new BigInteger(dStr);            BigInteger c = BigInteger.valueOf(Character.getNumericValue(lastChar));            BigInteger diff = d.subtract(c.multiply(BigInteger.valueOf(5)));            if (diff.mod(b).equals(BigInteger.ZERO)) {                System.out.println(1);            } else {                System.out.println(0);            }        }    }}

    代码解释

  • 读取输入:使用Scanner读取输入数据,处理每一行数据。
  • 处理输入数据:检查每行是否为"0",若是则结束循环。
  • 分割数字:将字符串分割为前面部分和个位数字。
  • 转换为大整数:将前面部分和个位数字分别转换为BigInteger对象。
  • 计算差值:计算前面部分减去个位数字的5倍。
  • 模运算:检查差值是否是17的倍数,输出结果。
  • 这种方法确保了能够处理非常大的数,并且通过模运算高效地判断倍数关系。

    上一篇:DDD专栏3:DDD是如何指导应用架构的?
    下一篇:SSM简单的使用

    发表评论

    最新留言

    表示我来过!
    [***.240.166.169]2026年06月16日 05时27分41秒