21100_整除

2022-5-16 18:18| 发布者: Hocassian| 查看: 37| 评论: 0|原作者: 肇庆学院ACM合集

摘要:
C:\Users\Administrator\Downloads\2019-10-12-10-14-3-89504838719900-Problem List-采集的数据-后羿采集器.html

Pro.ID

21100

Title

整除

Title链接

http://10.20.2.8/oj/exercise/problem?problem_id=21100

AC

1

Submit

1

Ratio

100.00%

时间&空间限制

  • Time Limit: 60000/30000 MS (Java/Others)     Memory Limit: 65536/65536 K (Java/Others)
  • 描述

    数论里面整除的概念是众所周知的了。其中,有如下规律:

    1. 如果一个整数的个位数字是0、2、4、6、8,那么这个整数就一定能被2整除。

    2. 如果一个整数的个位数字是 0 或者 5,那么这个整数就一定能被5整除。

    3. 如果一个整数的 各位数字之和 能被3(或9)整除,那么这个整数就一定能被3(或9)整除。

    4. 如果一个整数的 末尾两位数 能被4(或25)整除,那么这个整数就一定能被4(或25)整除。

    5. 如果一个整数的 末尾三位数 能被8(或125)整除,那么这个整数就一定能被8(或125)整除。

    6. 如果一个整数的 末尾四位数 能被16(或625)整除,那么这个整数就一定能被16(或625)整除。

    7. 如果一个整数的 奇位上的数字之和偶位上的数字之和的差的绝对值 能被11整除,那么这个整数就一定能被11整除。

    8. 如果一个整数的 末三位数末三位数以前的数字组成的数 的差能被7(或13)整除,那么这个整数就一定能被7(或13)整除。

    以上有些规律就不是众所周知的了,尤其是第8条。

    8'. (整除7的判断方法二)若一个整数的个位数字截去,再从余下的数中,减去个位数的2倍,如果差是7的倍数,则原数能被7整除。如果差太大或心算不易看出是否7的倍数,就需要继续上述「截尾、倍大、相减、验差」的过程,直到能清楚判断为止。例如,判断133是否7的倍数的过程如下:13-3×2=7,所以133是7的倍数;又例如判断6139是否7的倍数的过程如下:613-9×2=595 , 59-5×2=49,所以6139是7的倍数,余类推。

    8''. (整除7的判断方法三)预处理:用7作除数时,10的整数次方的余数如下:
     100 % 7  =  1,     101 % 7  =  3,     101 % 7  =  2,     103 % 7  =  6,     104 % 7  =  4
     105 % 7  =  5,     106 % 7  =  1,     107 % 7  =  3,     108 % 7  =  2,     109 % 7  =  6

      ......

    把每一位数字乘上该位所对应的那个余数,如果它们加起来等于 7 的整数倍,就肯定能被 7 整除。

    如:4312 ⇒ 4*6 + 3*2 + 1*3 + 2*1=35(可被整除),4312/7=616

          4311 ⇒ 4*6 + 3*2 + 1*3 + 1*1=34 (不可被整除),4311/7=615.857

    8'''. (整除13的判断方法二)若一个整数的个位数字截去,再从余下的数中,加上个位数的4倍,如果和是13的倍数,则原数能被13整除。如果差太大或心算不易看出是否13的倍数,就需要继续上述「截尾、倍大、相加、验差」的过程,直到能清楚判断为止。

    9. 若一个整数的个位数字截去,再从余下的数中,减去个位数的5倍,如果差是17的倍数,则原数能被17整除。如果差太大或心算不易看出是否17的倍数,就需要继续上述「截尾、倍大、相减、验差」的过程,直到能清楚判断为止。

    10. 若一个整数的个位数字截去,再从余下的数中,加上个位数的2倍,如果差是19的倍数,则原数能被19整除。如果差太大或心算不易看出是否19的倍数,就需要继续上述「截尾、倍大、相加、验差」的过程,直到能清楚判断为止。

    11. 若一个整数的末三位与3倍的前面的隔出数的差能被17整除,则这个数能被17整除。

    12. 若一个整数的末三位与7倍的前面的隔出数的差能被19整除,则这个数能被19整除。

    13. 若一个整数的末四位与前面5倍的隔出数的差能被23(或29)整除,则这个数能被23整除


    现给出一个正整数n,请判断n是否能被 2、5、3、4、8、16、11、7 整除。


    输入

    多测试用例。

    每个测试用例一行,是一个正整数n ( 0 < n < 1010000 )。

    输出

    Description

    数论里面整除的概念是众所周知的了。其中,有如下规律:

    1. 如果一个整数的个位数字是0、2、4、6、8,那么这个整数就一定能被2整除。

    2. 如果一个整数的个位数字是 0 或者 5,那么这个整数就一定能被5整除。

    3. 如果一个整数的 各位数字之和 能被3(或9)整除,那么这个整数就一定能被3(或9)整除。

    4. 如果一个整数的 末尾两位数 能被4(或25)整除,那么这个整数就一定能被4(或25)整除。

    5. 如果一个整数的 末尾三位数 能被8(或125)整除,那么这个整数就一定能被8(或125)整除。

    6. 如果一个整数的 末尾四位数 能被16(或625)整除,那么这个整数就一定能被16(或625)整除。

    7. 如果一个整数的 奇位上的数字之和偶位上的数字之和的差的绝对值 能被11整除,那么这个整数就一定能被11整除。

    8. 如果一个整数的 末三位数末三位数以前的数字组成的数 的差能被7(或13)整除,那么这个整数就一定能被7(或13)整除。

    以上有些规律就不是众所周知的了,尤其是第8条。

    8'. (整除7的判断方法二)若一个整数的个位数字截去,再从余下的数中,减去个位数的2倍,如果差是7的倍数,则原数能被7整除。如果差太大或心算不易看出是否7的倍数,就需要继续上述「截尾、倍大、相减、验差」的过程,直到能清楚判断为止。例如,判断133是否7的倍数的过程如下:13-3×2=7,所以133是7的倍数;又例如判断6139是否7的倍数的过程如下:613-9×2=595 , 59-5×2=49,所以6139是7的倍数,余类推。

    8''. (整除7的判断方法三)预处理:用7作除数时,10的整数次方的余数如下:
     100 % 7  =  1,     101 % 7  =  3,     101 % 7  =  2,     103 % 7  =  6,     104 % 7  =  4
     105 % 7  =  5,     106 % 7  =  1,     107 % 7  =  3,     108 % 7  =  2,     109 % 7  =  6

      ......

    把每一位数字乘上该位所对应的那个余数,如果它们加起来等于 7 的整数倍,就肯定能被 7 整除。

    如:4312 ⇒ 4*6 + 3*2 + 1*3 + 2*1=35(可被整除),4312/7=616

          4311 ⇒ 4*6 + 3*2 + 1*3 + 1*1=34 (不可被整除),4311/7=615.857

    8'''. (整除13的判断方法二)若一个整数的个位数字截去,再从余下的数中,加上个位数的4倍,如果和是13的倍数,则原数能被13整除。如果差太大或心算不易看出是否13的倍数,就需要继续上述「截尾、倍大、相加、验差」的过程,直到能清楚判断为止。

    9. 若一个整数的个位数字截去,再从余下的数中,减去个位数的5倍,如果差是17的倍数,则原数能被17整除。如果差太大或心算不易看出是否17的倍数,就需要继续上述「截尾、倍大、相减、验差」的过程,直到能清楚判断为止。

    10. 若一个整数的个位数字截去,再从余下的数中,加上个位数的2倍,如果差是19的倍数,则原数能被19整除。如果差太大或心算不易看出是否19的倍数,就需要继续上述「截尾、倍大、相加、验差」的过程,直到能清楚判断为止。

    11. 若一个整数的末三位与3倍的前面的隔出数的差能被17整除,则这个数能被17整除。

    12. 若一个整数的末三位与7倍的前面的隔出数的差能被19整除,则这个数能被19整除。

    13. 若一个整数的末四位与前面5倍的隔出数的差能被23(或29)整除,则这个数能被23整除


    现给出一个正整数n,请判断n是否能被 2、5、3、4、8、16、11、7 整除。


    Input

    多测试用例。

    每个测试用例一行,是一个正整数n ( 0 < n < 1010000 )。

    Output

    每个测试用例输出一行结果,从左到右是一行共8个0/1字符,分别对应能否被 2、5、3、4、8、16、11、7 整除:

    如果n能被相应数整除,相应位置输出1,否则输出0。

    详见样例。

    Sample Input

    100
    371
    4
    519

    Sample Output

    11010000
    00000001
    10010000
    00100000

    Hint

    为何不判断是否能被 13、17、19、23 整除?

    因为检验能否被这些数整除的算法,或许要使用到高精度整数。

    Source

    样例输入

    100
    371
    4
    519

    样例输出

    11010000
    00000001
    10010000
    00100000

    提示

    为何不判断是否能被 13、17、19、23 整除?

    因为检验能否被这些数整除的算法,或许要使用到高精度整数。


    路过

    雷人

    握手

    鲜花

    鸡蛋

    最新评论

    返回顶部