import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class problem18
{
public static void main(String[] args) throws FileNotFoundException {
int m[][]=readArch();
for (int i = m.length-2; i >=0; i--)
{
for (int j = 0; j <=i; j++) {
m[i][j]+=Math.max(m[i+1][j+1], m[i+1][j]);
}
}
System.out.println(m[0][0]);
}
private static int[][] readArch() throws FileNotFoundException
{
int triangulo[][]= new int [150][150];
Scanner sc = new Scanner (new File("C:\\triangle1.txt"));
int co=0,fi=0;
while(sc.hasNextLine())
{
String linea = sc.nextLine();
String v[]= linea.split(" ");
for (int i = 0; i < v.length; i++)
{
co=i;
triangulo[fi][co]=Integer.parseInt(v[i]);
}
fi++;
}
return triangulo;
}
}
lunes, 20 de febrero de 2012
Problem Euler 18 y 67
domingo, 19 de febrero de 2012
project euler # 41
import java.util.Arrays;
import java.util.BitSet;
import java.util.Scanner;
public class problem41
{
public static void main(String[] args)
{
long tiempo= System.currentTimeMillis();
BitSet a = new BitSet(987654321);
int i =2,j=0;
for(i=2;(i*i)<=10000000;i=i+1)
{
if(!a.get(i))
{
for(j=i+i;j<=10000000;j=j+i)
{
a.set(j);
}
}
}
for (int j2 =7654321; j2 >=1 ;j2--)
{
String x=Integer.toString(j2);
char v[]= x.toCharArray();
Arrays.sort(v);
if(!a.get(j2))
{
if(ispandigital(x, v[v.length-1]-48))
{System.out.println(x);
break;
}
}
}
System.out.println(System.currentTimeMillis()-tiempo);
}
public static boolean ispandigital(String x,int n)
{
boolean v[]= new boolean[n+1];
for (int i = 0; i < x.length(); i++)
{
v[x.charAt(i)-48]=true;
}
for (int i = 1; i < n+1; i++)
{
if(!v[i])
return false;
}
return true;
}
}
project euler # 32
import java.util.HashSet;
import java.util.Iterator;
import java.util.Scanner;
import java.util.Set;
public class problem32
{
public static void main(String[] args) {
long tiempo = System.currentTimeMillis();
HashSet b= new HashSet();
String cad;
String n;
for (int i = 1; i < 8; i++) {
for (int j = 1000; j < 10000; j++)
{
cad=Integer.toString(i*j);
n= Integer.toString(i)+Integer.toString(j);
if((n+cad).length()==9)
{
if(ispandigital(n+cad))
{
b.add(i*j);
}
}
}
}
for (int i = 10; i < 100; i++) {
for (int j = 100; j < 1000; j++)
{
cad=Integer.toString(i*j);
n= Integer.toString(i)+Integer.toString(j);
if((n+cad).length()==9)
{
if(ispandigital(n+cad))
{
b.add(i*j);
}
}
}
}
int c =0;
for( Iterator it = b.iterator(); it.hasNext(); ) {
c=c+it.next(); }
System.out.println(c);
System.out.println(System.currentTimeMillis()-tiempo);
}
public static boolean isPandigital(String all){
if(all.length() != 9) return false;
String arr[] = all.split("");
for(int i=1; i<=9; ++i){
boolean varMi = false;
String son = Integer.valueOf(i).toString();
for(int j=0; j<10; ++j){
if(arr[j].equals(son)){
varMi = true;
break;
}
}
if(!varMi) return false;
}
return true;
}
public static boolean ispandigital(String x)
{
boolean v[]= new boolean[10];
for (int i = 0; i < x.length(); i++)
{
v[x.charAt(i)-48]=true;
}
for (int i = 1; i < 10; i++)
{
if(!v[i])
return false;
}
return true;
}
}
miércoles, 15 de febrero de 2012
proyect euler 40
public class problem40
{
public static void main(String[] args)
{
StringBuffer a = new StringBuffer();
a.append("123456789");
int n =1;
while(n<=100000)
{
for(int i = 0; i <=9; i++)
{
String elem = Integer.toString(n)+Integer.toString(i);
a.append(elem);
}
n++;
}
int p =1;
int c =1;
for (int i = 0; i <= 6; i++)
{
c=c*(a.charAt(p-1)-48);
p=p*10;
}
System.out.println(c);
}
}
martes, 14 de febrero de 2012
Project Euler 24
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int myints[] = {0,1,2,3,4,5,6,7,8,9};
reverse(myints,myints+10);
for(int i=0; i<1000000; i++)
{
next_permutation (myints,myints+10);
}
cout << myints[0] << myints[1] << myints[2] << myints[3]<< myints[4] << myints[5]<< myints[6]<< myints[7]<< myints[8]<<myints[9]<<endl;
return 0;
}
Publicado por
starsaminf
en
23:49
0
comentarios
Enviar por correo electrónicoEscribe un blogCompartir en XCompartir con FacebookCompartir en Pinterest
Etiquetas:
projecteuler
Project Euler 23
#include <iostream>
#include <string.h>
#define tam 28123
using namespace std;
static int vec[tam];
static bool vec2[tam];
int sum_div(int n)
{
int sum=1;
for(int i=2; i<=n/2; i++)
{
if(n%i==0)
{
sum+=i;
}
}
return sum;
}
int main()
{
int conta=0;
for(int i=1; i<tam; i++)
{
if(sum_div(i)>i)
{
vec[conta]=i;
conta++;
}
}
memset(vec2,true,tam);
int sum_abun=0;
for(int r=0; r<conta; r++)
{
for(int i = 0; i < conta; i++)
{
sum_abun=vec[r] + vec[i];
if(sum_abun <= tam)
{
vec2[sum_abun] = false;
}
}
}
int tot = 0;
for(int i=0; i<tam; i++)
{
if(vec2[i])
tot +=i;
}
cout<<tot<<endl;
return 0;
}
Publicado por
starsaminf
en
22:57
0
comentarios
Enviar por correo electrónicoEscribe un blogCompartir en XCompartir con FacebookCompartir en Pinterest
Etiquetas:
projecteuler
problem euler 23
import java.util.Arrays;
import java.util.Iterator;
import java.util.TreeSet;
public class problem23
{
static TreeSet a ;
public static void main(String[] args) {
int c=0;
int v[]=new int [6965];
boolean v1[]= new boolean [28124];
Arrays.fill(v1, false);
for (int i = 1; i <=28123 ; i++)
{
if(nro(i)>i)
{
v[c]=i;
System.out.println(v[c]+" "+ c);
c++;
}
}
System.out.println("paso1");
long co=0;
TreeSet a= new TreeSet();
for (int i = 0; i < v.length; i++)
{
for (int j = 0; j < v.length; j++)
{
if((v[i]+v[j])<=28123)
v1[v[i]+v[j]]=true;
}
}
for (int i = 1; i <=28123; i++)
{
if(!v1[i])
co=co+i;
}
System.out.println(co);
}
public static int nro(int n )
{
int c =0;
for (int i = 1; i <= n/2; i++)
{
if(n%i==0)
c=c+i;
}
return c;
}
}
Suscribirse a:
Entradas (Atom)