11-1-2011, 11:48 AM
|
#135
|
x'); DROP TABLE FFR;--
Join Date: Nov 2010
Posts: 6,332
|
Re: THE project euler thread
This was the code for my "naive" attempt (note: does not work because it requires more precision than we have access to, doing it this way. Still works great for smaller powers, though):
Code:
import os, sys
from math import sqrt, acos, cos, pi
def bigRoot(a,b,c):
return (2 * sqrt(-(b - a*(a / 3.0))/3.0)) * cos(((acos((-((2*(a / 3.0)**2- b)*((a / 3.0)) + c)/2.0/ (sqrt(-(b - a*(a / 3.0))**3/27.0)))))/3.0)) - (a / 3.0)
def powRed(a,b,m):
if b==1:
return a
if b%2==0:
return powRed((a*a)%m,b/2,m)
else:
return (a*powRed((a*a)%m,(b-1)/2,m)) % m
sumTotal=0
for n in range(1,31):
a, b, c = -pow(2,n), 0, n #corresponds to x^3+ax^2+bx+c
print "N=" + str(n) + ", biggest root = " + str(bigRoot(a,b,c))
sumTotal=sumTotal+ int(powRed(bigRoot(a,b,c),987654321,10**8))
print "Last eight digits of power-sum: " + str(sumTotal % 10**8)
|
|
|