zoukankan      html  css  js  c++  java
  • Java解决8除不尽的数

    问题如下:
    一个自然数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

    本文来自博客园,作者:咸瑜,转载请注明原文链接:https://www.cnblogs.com/bi-hu/p/13943373.html

  • 相关阅读:
    Cookie工具类
    验证工具类
    压缩工具类
    一次外企QQ面试
    利用Referer请求头阻止"盗链"
    servlet中ServletConfig的使用
    jquery插件制作
    jQuery选择器总结(转)
    js文件加载执行顺序
    mysql有关问题之:the security settings could not be applied to
  • 原文地址:https://www.cnblogs.com/bi-hu/p/13943373.html
Copyright © 2011-2022 走看看