试题B:相乘

题目

题目重点

  • (数字*2021)会超出int的最大范围,算是一个隐藏的坑,如果没有注意到这个,就会得出0的结果。
  • 这里要用到BigInteger大数字、String.valueOf()将int转换为字符串
  • multiply乘、mod取余

代码

import java.math.BigInteger;

public class Main {

	public static void main(String[] args) {
		//(i*2021)%1000000007 == 999999999
		BigInteger num999999999 = new BigInteger("999999999");
		BigInteger num2021 = new BigInteger("2021");
		BigInteger num1000000007 = new BigInteger("1000000007");
		
		for (int i = 0; i < 1000000007; i++) {
			BigInteger a = new BigInteger(String.valueOf(i));//i转换成大数
			
			BigInteger mul = a.multiply(num2021);
			BigInteger mod = mul.mod(num1000000007);
			
			if(mod.equals(num999999999)) {
				System.out.println(i);
				break;
			}
		}
	}

}

答案

17812964

posted @   猪猪猪猪侠  阅读(39)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示