Skip to content

Commit 9b72dd6

Browse files
authored
Merge pull request #55 from jaesharma/master
adding project euler problem solutions
2 parents e66dd79 + 00d9db5 commit 9b72dd6

File tree

11 files changed

+368
-0
lines changed

11 files changed

+368
-0
lines changed

Project Euler/112.cpp

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
#include<iostream>
2+
#include<stdlib.h>
3+
4+
using namespace std;
5+
6+
bool isbouncy(long long int digit){
7+
int flag,prev,curr;
8+
prev=digit%10;
9+
digit/=10;
10+
while(digit!=0){
11+
curr=digit%10;
12+
digit/=10;
13+
if(curr<prev){
14+
if(flag==1) return true;
15+
flag=0;
16+
}
17+
else if(curr>prev){
18+
if(flag==0) return true;
19+
flag=1;
20+
}
21+
prev=curr;
22+
}
23+
return false;
24+
}
25+
26+
int main(){
27+
long long int digit=100,count=0;
28+
while(true){
29+
if(isbouncy(digit)) count++;
30+
if(((count*100)/digit)>=99){
31+
cout<<digit;
32+
exit(0);
33+
}
34+
digit++;
35+
}
36+
}

Project Euler/18.cpp

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#include<iostream>
2+
#include<vector>
3+
#include<algorithm>
4+
5+
using namespace std;
6+
7+
int main(){
8+
int rp,lp,i,j,rows=100,cols,sum,x;
9+
vector<int> last,curr;
10+
cin>>x;
11+
last.push_back(x);
12+
for(i=1;i<rows;i++){
13+
cols=i+1;
14+
curr.clear();
15+
for(j=0;j<cols;j++){
16+
cin>>x;
17+
lp=0; //left parent
18+
if(j>0) lp=last[j-1];
19+
rp=0; //right parent
20+
if(j<last.size()) rp=last[j];
21+
sum=x+max(lp,rp);
22+
curr.push_back(sum);
23+
}
24+
last=curr;
25+
}
26+
cout<<*max_element(last.begin(),last.end());
27+
}

Project Euler/26.cpp

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#include<iostream>
2+
#include<vector>
3+
4+
using namespace std;
5+
6+
int main(){
7+
int ans=0,num,den,rem,count,max=0;
8+
vector<int> v;
9+
for(den=2;den<1000;den++){
10+
num=1;
11+
rem=0;
12+
count=0;
13+
v.clear();
14+
v.assign(den,0);
15+
while(v[num]==0){
16+
v[num]=count;
17+
num=(num*10)%den;
18+
count++;
19+
}
20+
if(count-v[rem]>max){
21+
max=count-v[rem];
22+
ans=den;
23+
}
24+
}
25+
cout<<max;
26+
}

Project Euler/27.cpp

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
#include<iostream>
2+
#include<vector>
3+
#include<cmath>
4+
using namespace std;
5+
6+
int main(){
7+
vector<int> v;
8+
long long int i,j,a,b,n,max=0,ans=0;
9+
v.assign(1000000,0);
10+
for(i=2;i<1000000;i++){
11+
if(v[i]==0 || v[i]==1){
12+
for(j=i;j<1000000;j+=i){
13+
v[j]++;
14+
}
15+
}
16+
}
17+
for(a=-1000;a<1000;a++){
18+
for(b=1;b<=1000;b++){
19+
if(v[b]!=1) continue;
20+
n=0;
21+
while(v[abs(n*n+a*n+b)]==1) n++;
22+
if(n+1>max){
23+
max=n+1;
24+
ans=a*b;
25+
}
26+
}
27+
}
28+
cout<<ans;
29+
}

Project Euler/40.cpp

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#include<iostream>
2+
#include<vector>
3+
4+
using namespace std;
5+
6+
int main(){
7+
vector<int> v;
8+
vector<int> v2;
9+
v.assign(1000001,0);
10+
long long int dig=1,i=1,j,digit;
11+
while(i<=1000000){
12+
//cout<<dig<<endl;
13+
digit=dig;
14+
v2.clear();
15+
while(digit!=0){
16+
v2.push_back(digit%10);
17+
digit/=10;
18+
}
19+
for(j=v2.size()-1;j>=0;j--){
20+
v[i]=v2[j];
21+
// cout<<v[i]<<endl;
22+
i++;
23+
}
24+
dig++;
25+
}
26+
cout<<v[1]*v[10]*v[100]*v[1000]*v[10000]*v[100000]*v[1000000];
27+
}

Project Euler/62.cpp

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
#include<vector>
2+
#include<iostream>
3+
#include<stdlib.h>
4+
#include<map>
5+
6+
using namespace std;
7+
8+
unsigned long long int fingerprint(vector<unsigned long long int> digit){
9+
unsigned long long int i,k,dig,shift,fp=0;
10+
for(k=0;k<digit.size();k++){
11+
shift=1;
12+
dig=digit[k];
13+
for(i=0;i<dig;i++) shift*=10;
14+
fp+=shift;
15+
}
16+
return fp;
17+
}
18+
19+
int main(){
20+
vector<unsigned long long int> cube,temp2,fp2;
21+
map<unsigned long long int, vector<unsigned long long int> > mp;
22+
map<unsigned long long int, int > mp2;
23+
long long int temp,fp,j,k,carry;
24+
int i;
25+
for(i=10;i<=10000;i++){
26+
temp=i;
27+
cube.clear();
28+
while(temp!=0){
29+
cube.push_back(temp%10);
30+
temp/=10;
31+
}
32+
for(j=1;j<=2;j++){
33+
temp2.clear();
34+
carry=0;
35+
for(k=0;k<cube.size();k++){
36+
temp=cube[k]*i+carry;
37+
temp2.push_back(temp%10);
38+
carry=temp/10;
39+
}
40+
while(carry!=0){
41+
temp2.push_back(carry%10);
42+
carry/=10;
43+
}
44+
cube=temp2;
45+
}
46+
fp=fingerprint(cube);
47+
if(mp.find(fp)!=mp.end()){
48+
mp2[fp]++;
49+
if(mp2[fp]==5){
50+
for(j=mp[fp].size()-1;j>=0;j--)
51+
cout<<mp[fp][j];
52+
exit(0);
53+
}
54+
}else{
55+
mp[fp]=cube;
56+
mp2[fp]=1;
57+
}
58+
}
59+
}

Project Euler/67.cpp

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#include<iostream>
2+
#include<vector>
3+
#include<algorithm>
4+
5+
using namespace std;
6+
7+
int main(){
8+
int rp,lp,i,j,rows=100,cols,sum,x;
9+
vector<int> last,curr;
10+
cin>>x;
11+
last.push_back(x);
12+
for(i=1;i<rows;i++){
13+
cols=i+1;
14+
curr.clear();
15+
for(j=0;j<cols;j++){
16+
cin>>x;
17+
lp=0; //left parent
18+
if(j>0) lp=last[j-1];
19+
rp=0; //right parent
20+
if(j<last.size()) rp=last[j];
21+
sum=x+max(lp,rp);
22+
curr.push_back(sum);
23+
}
24+
last=curr;
25+
}
26+
cout<<*max_element(last.begin(),last.end());
27+
}

Project Euler/87.cpp

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
#include<iostream>
2+
#include<vector>
3+
#include<cmath>
4+
#include<algorithm>
5+
#include<map>
6+
using namespace std;
7+
8+
int main(){
9+
vector<int> v;
10+
v.assign(7100,0);
11+
map<long long int,long long int> mp;
12+
unsigned long long int i,j,k, max=50000000,temp,a1,a2,a3;
13+
for(i=2;i<7100;i++){
14+
if(v[i]==0 || v[i]==1){
15+
for(j=i;j<7100;j+=i) v[j]++;
16+
}
17+
}
18+
for(i=2;i<=7100;i++){
19+
if(v[i]==1){
20+
for(j=2;j<=370;j++){
21+
if(v[j]==1){
22+
if((i*i+j*j*j)>max) break;
23+
for(k=2;k<=85;k++){
24+
if(v[k]==1){
25+
a1=i*i;
26+
a2=(unsigned long long int)j*j*j;
27+
a3=(unsigned long long int)k*k*k*k;
28+
temp=a1+a2+a3;
29+
if(temp>=max) break;
30+
mp[temp]=i;
31+
}
32+
}
33+
}
34+
}
35+
}
36+
}
37+
cout<<mp.size();
38+
}

Project Euler/problem46.cpp

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
#include<iostream>
2+
#include<stdlib.h>
3+
#include<cmath>
4+
#include<vector>
5+
6+
using namespace std;
7+
8+
int main(){
9+
int flag;
10+
vector<unsigned long long int> v;
11+
v.assign(1000000,0);
12+
unsigned long long int i,j,n2;
13+
for(i=2;i<1000000;i++){
14+
if(v[i]==0 || v[i]==1){
15+
for(j=i;j<1000000;j+=i) v[j]++;
16+
}
17+
}
18+
double n;
19+
i=9;
20+
while(true){
21+
if(v[i]==1){
22+
i+=2;
23+
continue;
24+
}
25+
flag=0;
26+
for(j=1;2*j*j<i;j++){
27+
if(v[i-2*j*j]==1) flag=1;
28+
}
29+
if(flag==0) cout<<i<<endl;
30+
i+=2;
31+
}
32+
}

Project Euler/problem79.cpp

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
#include<iostream>
2+
#include<vector>
3+
#include<algorithm>
4+
5+
using namespace std;
6+
7+
int main(){
8+
vector<int> d,v;
9+
vector<int>::iterator p1,p2;
10+
int temp,digit,i,pos1,pos2;
11+
while(true){
12+
cin>>digit;
13+
d.clear();
14+
while(digit!=0){
15+
d.push_back(digit%10);
16+
digit/=10;
17+
}
18+
for(i=d.size()-1;i>=0;i--){
19+
if(find(v.begin(),v.end(),d[i])==v.end()) v.push_back(d[i]);
20+
}
21+
for(i=d.size()-1;i>0;i--){
22+
p1=find(v.begin(),v.end(),d[i]);
23+
p2=find(v.begin(),v.end(),d[i-1]);
24+
pos1=p1-v.begin();
25+
pos2=p2-v.begin();
26+
if(pos2<pos1){
27+
temp=v[pos1];
28+
v[pos1]=v[pos2];
29+
v[pos2]=temp;
30+
}
31+
}
32+
for(i=0;i<v.size();i++) cout<<v[i];
33+
cout<<endl;
34+
}
35+
}

0 commit comments

Comments
 (0)