def all_subsets(arr):
subsets = [[]]
for num in arr:
subsets += [curr + [num] for curr in subsets]
subsets.remove([]) # Remove the empty set return subsets
def find_subset_sums(arr):
subsets = all_subsets(arr)
subset_sums = [sum(subset) for subset in subsets]
return subset_sums
def raise_to_power(numbers, n):
powered_numbers = [num ** n for num in numbers]
return powered_numbers
def sum_of_powers(arr, n):
subset_sums = find_subset_sums(arr)
powered_sums = raise_to_power(subset_sums, n)
total_sum = sum(powered_sums)
return total_sum
a, b = map(int, input().split())
integers = list(map(int, input().split()))
total_sum = sum_of_powers(integers, b)
print(total_sum)
这是我的问题代码。
我测试了示例输入,它给出了正确的输出。
但是对于这个输入
18 2
482 154 785 886 116 733 769 179 996 867 480 839 909 282 100 847 173 989
代码输出7878350864384,错误。为什么?
任何帮助将不胜感激
当你求幂时,你还需要取模。这是你如何做到的。
MOD = 998244353
def raise_to_power(numbers, n):
powered_numbers = [pow(num, n, MOD) for num in numbers]
return powered_numbers
最后还要取模一次,以防总和超过
MOD
:print(total_sum % MOD)