Pro.ID21100 Title整除 Title链接http://10.20.2.8/oj/exercise/problem?problem_id=21100 AC1 Submit1 Ratio100.00% 时间&空间限制描述数论里面整除的概念是众所周知的了。其中,有如下规律: 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的整数次方的余数如下: ...... 把每一位数字乘上该位所对应的那个余数,如果它们加起来等于 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的整数次方的余数如下: ...... 把每一位数字乘上该位所对应的那个余数,如果它们加起来等于 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 Sample Output 11010000 Hint 为何不判断是否能被 13、17、19、23 整除? 因为检验能否被这些数整除的算法,或许要使用到高精度整数。 Source 样例输入100 样例输出11010000 提示为何不判断是否能被 13、17、19、23 整除? 因为检验能否被这些数整除的算法,或许要使用到高精度整数。 作者 |