Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions coin change.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# PROGRAM TO FIND MINIMUM NUMBER OF COINS NEEDED TO MAKE A CERTAIN AMOUNT................

def coinChange(centsNeeded,coinValues):
minCoins=[[0 for j in range(centsNeeded+1)] for i in range(len(coinValues))]
minCoins[0]=range(centsNeeded+1)
for i in range(1,len(coinValues)):
for j in range(0,centsNeeded+1):
if j<coinValues[i]:
minCoins[i][j]=minCoins[i-1][j]
else:
minCoins[i][j]=min( minCoins[i-1][j] , 1 + minCoins[i][j-coinValues[i]] )
return minCoins[-1][-1]
print coinChange(8,[1,2,5,10,20,50,100,200]) # 1 should always be in the if not then append 1 else will be wrong

16 changes: 16 additions & 0 deletions coin sums.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
l=[1,2,5,10,20,50,100,200]
t=input()
while t:
t-=1
n=input()
w=[]
for i in range(n+1):
if i==0:
w.append(1)
else:
w.append(0)
for i in range(len(l)):
x=l[i]
for j in range(x,n+1):
w[j]+=w[j-x]
print w[n]
18 changes: 18 additions & 0 deletions detect_html_tags.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
from HTMLParser import HTMLParser


class MyHTMLParser(HTMLParser):
def handle_starttag(self, tag, attrs):
print tag
for attr in attrs:
print "->"," > ".join(attr)

parser = MyHTMLParser()

html = ""
for i in range(int(raw_input())):
html += raw_input()
html += '\n'


parser.feed(html)
27 changes: 27 additions & 0 deletions factorial.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
t=input()
while t>0:
t-=1
le=0
fact=[0]*(100001)
fact[0]=1
m=input()
for k in range(2,m+1):
r=0
arr=[0]*(100001)
for i in range(le+1):
arr[i]=fact[i]
for i in range(le+1):
fact[i]=(arr[i]*k+r)%10
r=(arr[i]*k+r)/10
i+=1
if r!=0:
while r!=0:
fact[i]=r%10
r/=10
i+=1
le=i-1
x=((fact[:le+1])[::-1])
for i in range(len(x)):
x[i]=str(x[i])
print ''.join(x)

17 changes: 17 additions & 0 deletions gcd_n_nos.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
def gcd(x,y):
while(y!=0):
temp=x%y
x=y
y=temp
return x
def gcd_n(l):
if(len(l)>=2):
x=gcd(l[0],l[1])
for i in range(2,len(l)):
x=gcd(x,l[i])
return x
else:
return l[0]
'''l=list(map(int,raw_input().split()))
print gcd_n(l)
'''
17 changes: 17 additions & 0 deletions knapsack.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
def knapsack(W,wt,val,n):
k=[]
for i in range(n+1):
k.append([0]*(W+1))
for i in range(n+1):
for w in range(W+1):
if i==0 or w==0:
k[i][w]=0
elif wt[i-1]<=w:
k[i][w]=max(k[i-1][w],val[i-1]+k[i-1][w-wt[i-1]])
else:
k[i][w]=k[i-1][w]
return k[n][W]
val=[60,100,120]
wt=[10,20,30]
W=50
print knapsack(W,wt,val,len(val))
25 changes: 25 additions & 0 deletions lcs.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
def lcsd(x,y):
m=len(x)
n=len(y)
global c
c=[]
for j in range(n+1):
c.append([0]*(m+1))
for i in range(1,m+1):
for j in range(1,n+1):
if x[i-1]==y[j-1] :
c[j][i]=str(c[j-1][i-1])+str(x[i-1])

else:
c[j][i]=max(str(c[j-1][i]),str(c[j][i-1]))

return c[n][m]




a=raw_input()
b=raw_input()
m=lcsd(a,b)
ff=m.replace('0','')
print ff,len(ff)
28 changes: 28 additions & 0 deletions lcs_n_numbers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
def lcsd(x,y):
m=len(x)
n=len(y)
global c
c=[]
for j in range(n+1):
c.append([['@']]*(m+1))
for i in range(1,m+1):

for j in range(1,n+1):
if x[i-1]==y[j-1] :
c[j][i]=list(c[j-1][i-1])
c[j][i].append((x[i-1]))

else:
if len(c[j-1][i])>=len(c[j][i-1]):
c[j][i]=list(c[j-1][i])
else:
c[j][i]=list(c[j][i-1])
return c[n][m]

a=list(map(int,raw_input().split()))
b=list(map(int,raw_input().split()))
m=lcsd(a,b)
for i in m:
if(i!='@'):
print i,

11 changes: 11 additions & 0 deletions ncrmodm.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
def modinv(a,m):
return pow(a,m-2,m)
def nCrmodm(n,k,m):
num=1
for i in range(k):
num=(num*(n-i))%m
den=1
for i in range(1,k+1):
den=(den*i)%m
return (num*modinv(den,m))%m
print nCrmodm(5,2,pow(10,9)+7)
26 changes: 26 additions & 0 deletions pow(a,-b,x).py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
L = 10**6
# sieve of Eratosthenes
primes = []
is_prime = [False]*2 + [True]*(L-1)
for p in xrange(2,L+1):
if is_prime[p]:
primes.append(p)
for n in xrange(2*p,L+1,p):
is_prime[n] = False
# calculate Euler's totient function
phi = [0]*(L+1)
for n in xrange(1,L+1):
phi[n] = n
for p in primes:
for n in xrange(p,L+1,p):
phi[n] -= phi[n]/p
t=input()
while t>0:
t-=1
a,b,x=map(int,raw_input().split())
if b<0:
ans=pow(a,phi[x]-1,x)
print pow(ans,-b,x)
else:
print pow(a,b,x)

16 changes: 16 additions & 0 deletions prime summations.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
def primes_sieve(n):
sieve=[True]*n
for i in xrange(3,int(n**0.5)+1,2):
if sieve[i]:
sieve[i*i::2*i]=[False]*((n-i*i-1)/(2*i)+1)
return [2] + [i for i in xrange(3,n,2) if sieve[i]]
t=input()
for ii in range(t):
n=input()
primes=primes_sieve(n+1)
ways=[0 for i in range(n+1)]
ways[0]=1
for i in range(len(primes)):
for j in range(primes[i],n+1):
ways[j]+=ways[j-primes[i]]
print ways[n]
24 changes: 24 additions & 0 deletions prime.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
def main(m, n):
primes = [False for x in xrange(n-m+1)]
p = 2
while p*p <= n:
r = m / p
r *= p
for j in xrange(r, n+1, p):
if j != p and j >= m:
primes[j-m] = True
p += 1

for i in xrange(n-m+1):
if not primes[i] and m+i != 1:
print m + i


if __name__ == "__main__":
t = int(raw_input()) ## nb of test cases

for k in xrange(t):
m, n = map(int, raw_input().split())
main(m, n)
if k < t-1:
print ""
50 changes: 50 additions & 0 deletions prime_best.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@

#fastest and calculates prime number below n
def primes_sieve_best(n):
sieve=[True]*n
for i in xrange(3,int(n**0.5)+1,2):
if sieve[i]:
sieve[i*i::2*i]=[False]*((n-i*i-1)/(2*i)+1)
return [2] + [i for i in xrange(3,n,2) if sieve[i]]
def prime_biggy(n):
biggy=[1]*(n+1)
for i in xrange(2,int(n**0.5) + 1):
if biggy[i]==1:
j=2
while j*i<=n:
if biggy[j*i]==1:
biggy[j*i]=0
j+=1
biggy2=[]
for i in range(2,n+1):
if biggy[i]==1:
biggy2.append(i)
return biggy2
print len(prime_biggy(1000000))
'''
# from m to n
def main(m, n):
primes = [False for x in xrange(n-m+1)]
p = 2
while p*p <= n:
r = m / p
r *= p
for j in xrange(r, n+1, p):
if j != p and j >= m:
primes[j-m] = True
p += 1

for i in xrange(n-m+1):
if not primes[i] and m+i != 1:
print m + i


if __name__ == "__main__":
t = int(raw_input()) ## nb of test cases

for k in xrange(t):
m, n = map(int, raw_input().split())
main(m, n)
if k < t-1:
print ""
'''