试题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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现