问题如下:
一个自然数N被8除余1,所得的商N1被8除也余1,
而第二次的商N2(N2 为N1 除以8的结果) 被8除后余7,将第二次的商N2再除以8得到一个商为a.
又知这个自然数N被17除的余数是4.这个N被17除之后的商为M,M被17除之后得到商为B,余数为15, 又知道B是a的2倍.
解答解惑:
首先这道题是要用到死循环加break来写,其次分开他的条件,分为两部分,一部分是N % 一个数后等于多少 ;另一部分是 M 和 a 和 B 的判式,我们需要思维反转来想这道题,
代码如下 请认真看注释:
import java.util.*; public class Main { public static void main(String[] args) { int n = 0; while(true) { if(n % 8 == 1 && // 1个自然数N被8除余1, n/8%8 == 1 && //所得的商N1被8除也余1 n/64%8 == 7 && //N2(N2 为N1 除以8的结果) 被8除后余7 n2就是 n/8/8 等价于 n/64 n % 17 ==4 && //这个自然数N被17除的余数是4 (2*(n/512)) == (n/(17*17)) && //将第二次的商N2再除以8得到一个商为a 这个N被17除之后的商为M,M被17除之后得到商为B,又知道B是a的2倍. n/17%17 == 15)//这个N被17除之后的商为M,M被17除之后得到商为B且余数为15 {System.out.print(n); break;} n++; } } }
那就是 把这两部分分开来判断,如果有符合 打印出后跳出循环,
其中后面的判断是比较难理解的 那些 512 和 64 都是 8*8*8 和 8*8 和 n/8/8/8 和 n/8/8 是等价的,希望这点要明白。
2020年11月8日 08:19:09