Project Euler #43: Sub-string divisibility

  • + 1 comment

    Try this code:

    Note:-

    The main difference between your approach and my approach is How to generate permutations and check for divisibility

    Approach:- This code takes an integer input n and defines a function solve() to find the sum of all numbers formed by permutations of the digits 0 to n, which satisfy a certain divisibility condition. The divisible_test() function checks if a given number formed by the permutation satisfies the divisibility condition for a set of prime numbers. The condition checks if the sub-strings of length 3 in the number are divisible by the corresponding prime numbers in the divisible list.

    The solve() function iterates through all permutations of the numbers 0 to n and checks if each permutation satisfies the divisibility condition using divisible_test(). If a permutation satisfies the condition, it converts the permutation into an integer and adds it to the sum. Finally, the function returns the sum of all such numbers.

    The code uses the itertools.permutations function to generate all permutations of the numbers 0 to n. It then applies the divisible_test() function to each permutation to check for divisibility. If a permutation satisfies the divisibility condition, its corresponding number is added to the sum.

    ''' from itertools import permutations n = int(input()) def solve(): return sum(int(''.join(map(str, num))) for num in permutations(range(n+1)) if divisible_test(num)) divisible=[2, 3, 5, 7, 11, 13, 17] def divisible_test(num): return all((num[i+1]*100+num[i+2]*10+num[i+3]) %p == 0 for i, p in enumerate(divisible[:n-2])) print(solve()) '''

    • + 0 comments

      ''' from itertools import permutations n = int(input()) def solve(): return sum(int(''.join(map(str, num))) for num in permutations(range(n+1)) if divisible_test(num)) divisible=[2, 3, 5, 7, 11, 13, 17] def divisible_test(num): return all((num[i+1]*100+num[i+2]*10+num[i+3]) %p == 0 for i, p in enumerate(divisible[:n-2])) print(solve()) '''