#include <iostream>
#include <math.h>
using namespace std;
//metodo para obtener el i-esimo caracter de la concatenacion de 1,2,3,4,5...
int d(int i)
{
int cd = 0; //cantidad de digitos
int cda = 0; //cantidad de digitos acumulados
int scd = 0; //siguiente cantidad de dtitos
while( cda + scd < i)
{
cda += scd;
cd++;
scd = (pow(10,cd)-pow(10,cd-1))*cd;
}
int numactual = pow(10,cd-1)-1;//numero actual hasta el cual se sumo
while(cda < i)
{
cda += cd;
numactual++;
}
int csp = (cda-i);
while(csp--) numactual /= 10;
return numactual%10;
}
int main()
{
cout << d(1)*d(10)*d(100)*d(1000)*d(10000)*d(100000)*d(1000000)<<endl;
return 0;
}
jueves, 15 de marzo de 2012
Project Euler 40
martes, 13 de marzo de 2012
Project Euler 39
#include <iostream>
using namespace std;
int main()
{
int v[1001], a, b, c;
for( a = 1000 ; a >= 0 ; a--) v[a] = 0 ;
for ( c = 1; c <= 1000; c++)
for ( b = 1; b < c; b++)
for ( a = 0; a <= b; a++)
if(a+b>c && b-a<c && a+b+c <= 1000 && c*c == a*a+b*b)
v[a+b+c]++;
b = 0 ;
for ( a = 0; a <= 1000; a++)
if(v[a]>v[b])
b = a;
cout << b << endl;
return 0;
}
Project Euler 38
public class Problema38 {
static boolean isPandigital(String num){
if(num.length()!=9)
return false;
for (int i = 1; i < 10; i++)
if(!num.contains(""+i))
return false;
return true;
}
public static void main(String[] args) {
String max = "123456789";
for (int i = 9; i < 10000; i++) {
int m = 1;
String sol = "";
while(sol.length()<9){
sol += (i*m);
m++;
}
if(sol.length()==9)
if(isPandigital(sol))
if(sol.compareTo(max)>0)
max = sol;
}
System.out.println(max);
}
}
lunes, 20 de febrero de 2012
Problem Euler 18 y 67
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;
}
}
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);
}
}
Suscribirse a:
Entradas (Atom)