一个整数,只知道前几位是a ,不知道末二位,但知道可以被一个两位数b 整除,那么该数的末二位该是什么呢(用java解决
时间: 2024-02-23 08:58:21 浏览: 120
可以使用Java代码解决这个问题。根据题目所说,我们可以列出以下方程:
a * 100 + xy = kb
其中,a为已知的前几位数,xy为未知的末二位数,k为一个未知的整数倍数,b为已知的两位数。
因为b可以整除kb,所以kb可以被b整除,即:
kb % b = 0
将kb代入上面的方程,得到:
(a * 100 + xy) % b = 0
将xy拆分为10x + y,代入上式,得到:
(a * 100 + 10x + y) % b = 0
因为b为两位数,所以b可以表示为10c + d,代入上式,得到:
(a * 100 + 10x + y) % (10c + d) = 0
将式子展开,得到:
(100a + 10x + y) % (10c + d) = 0
根据余数定理,余数等于被除数减去被除数除以除数的商乘以除数,即:
(100a + 10x + y) - ((100a + 10x + y) / (10c + d)) * (10c + d) = 0
将式子整理,得到:
(100a + 10x + y) - ((100a + 10x) / (10c + d)) * (10c + d) - (y / (10c + d)) * (10c + d) = 0
因为10c + d是两位数,所以((100a + 10x) / (10c + d))是整除,所以((100a + 10x) / (10c + d)) * (10c + d)可以表示为一个整数k乘以(10c + d),同理,(y / (10c + d)) * (10c + d)可以表示为另一个整数l乘以(10c + d),代入上式,得到:
100a + 10x + y - k * (10c + d) - l * (10c + d) = 0
移项,整理,得到:
y = k * (10c + d) + l * (10c + d) - 100a - 10x
因为y是个位数,所以y必须在0到9之间,因此可以通过枚举c和d的值,计算出y的值,判断是否在0到9之间,如果满足条件,即可得到正确答案。
下面是Java代码实现:
```java
public class Main {
public static void main(String[] args) {
int a = 123; // 已知的前几位数
int b = 23; // 已知的两位数
int y = 0; // 末两位数
for (int c = 0; c <= 9; c++) {
for (int d = 0; d <= 9; d++) {
if ((10 * c + d) % b == 0) {
int k = (100 * a + 10 * c + d) / b;
int l = (100 * a + 10 * c + d) % b;
y = k * (10 * c + d) + l - 100 * a - 10 * c;
if (y >= 0 && y <= 9) {
System.out.println("末两位数为:" + (10 * c + d) + y);
return;
}
}
}
}
System.out.println("无法确定末两位数");
}
}
```
假设已知的前几位数为123,已知的两位数为23,则程序输出的结果为:
```
末两位数为:29
```
阅读全文