μ κ·Ό ¶
μ²μ λ¬Έμ λ₯Ό μ΄ν΄νλλ° λλ΅ 4λΆ. '10μ§μ' λΌλ λ§μ ννΉλμλ€κ° μν λ°μ΄ν° 보면μ κ°λ¨ν κ°μ μ‘μ.
μ²μμλ brute-force ν±ν λ°©λ² μ μ©. κ·Έλ¬λ€κ° μΈλ²μ§Έ μν λ°μ΄ν°μμ μμ²λκ² μλκ° μ νλλ κ²μ λλ. μ¬νκ»μ κ²½νμ μνλ©΄ '무μΈκ° λ€λ₯Έ κ³μ° λ°©λ²μ΄ μκ² κ΅°' μ΄λΌλ κ°μ΄ μ€λ€. brute-force λ°©λ²μμ 미리 cut μ ν λ°©λ²μ μ΄λ¦¬μ 리 μλ. (첫째μ리μ λμλ¦¬λ§ 1 λΉκ΅.) μκ°μ΄ μ€μ΄λ€κΈ΄ νλ 9901 μμ μ λν΄μ κΈλ°© λ΅μ΄ λμ€μ§ μμ. 9901 λ³΄λ€ ν° μμ λ μμκ²μ΄λΌ ν λ, λΆλͺ
κΈλ°© λλΌ λ°©λ²μ΄ μμ κ²μ΄λΌλ νμ μ λλ, μκ°μ΄ λ μ€λ₯΄μ§ μμ.
μ΄λ»κ² μ κ·Όν κΉ νλ€κ° μ§κΈκΉμ§ μ°μ΅μ₯μ μ μ°κ³ μμμ νμΈ. μ°μ΅μ₯μ κΊΌλ΄λ μκ° 'ν' νκ³ λλμ΄ μ€λ€.~ κ·Έλ¦¬κ³ λ°λ‘ μ΅μ’
μ½λ μλ£.
- μ°μ΅μ₯μ μ ν μ«μ : 1, 11, 111, 1111
μ΅μ’ μ½λ ¶
~cpp import unittest def isAllOne(aValue): valueStr = str(aValue) for each in valueStr: if each != '1': return False return True def isMultiplyOf(aValue, mulValue): return aValue % mulValue == 0 def ones(aValue): theOnes = "1" while True: onesValue = int(theOnes) if isMultiplyOf(onesValue,aValue): return len(theOnes) theOnes += "1" class OnesTest(unittest.TestCase): def testSmall(self): self.assertEquals(3, ones(3)) self.assertEquals(6, ones(7)) def testSmall2(self): self.assertEquals(9, ones(9)) def testLarge(self): self.assertEquals(12, ones(9901)) def testIsAllOne(self): self.assert_(isAllOne(1111)) self.assert_(not isAllOne(1112)) def main(): print ones(int(raw_input())) if __name__=="__main__": #unittest.main(argv=('','-v')) main()