domingo, 12 de mayo de 2013

Codeforces Round # 183 A div2

Luego de Perderme tanto tiempo en hacer proyectos y exámenes en la U no pude hacer editoriales pues hora de retomar hoy a las 9:00 am era el Codeforces Round # 183 Solo hice uno pero logre hackear 5 códigos jejeje.
Problema.-
A. Pythagorean Theorem II LINk
Como todos saben la formula del Teorema de Pitagoras que equivale a 
2  +  2  =  2






Dado n , su tarea es contar cuántos triángulos rectángulos con los laterales del largo de ab y c que satisface una desigualdad 1 ≤ a  ≤  b  ≤  c  ≤  n 
(1 ≤  n  ≤ 10 4 )
Solución.-
Ni mas vi el ejercicio dije Fuerza bruta pues era  10 4 y rotar por cada variable tanto a,b y c  entonces me daba un O(n3)  pero al hacer correr cuando n=10 4 tardo mas de 2 s, entonces intente buscar alguna idea para poder solucionar eso, y lo que vino a mi cabeza fue rotar entre a y b y ver si la suma de cuadrados es un numero cuadrado perfecto, así llegue a eliminar mi tercer for, así es como llegue a hacer mis hack muchos usaron 3 for y para el caso mencionado les daba tiempo limite Excedido jejeje.
Código.-

int main()
{
    int n;
    int c;
    cin>>n;
    c=0;
    int t=0,q=0;
    for(int i=1;i<=n && q<=n;i++)
    {
        for(int j=i;j<=n && q<=n;j++)
        {
            t=i*i+j*j;
            int q=sqrt(t);
            if(q*q==t && q<=n)
                c++;
        }
    }
    cout<<c<<endl;
return 0;
}
Si tienen una mejor idea por favor me gustaría leerla o una forma de mejorar el código como siempre, toda critica es bien aceptada.

lunes, 1 de abril de 2013

Conversor de Bases

Muchachos Disculpen la tardanza pero no pude subir nuevo material por la falta de tiempo q tube en diferentes concursos que hubo esta semana y proyectos de la U este es el algoritmo sobre que convierte cualquier numero en base 10 a cualquier base que sea menor a 20

CODIGO.-


public String Conversor(int n, int b)
{
   String chars="0123456789ABCDEFGHIJ";
   String resultado="";
      
   while(n>0)
   {
      resultado=chars.charAt(n%b) + resultado;
      n/=b;
   }
      
   return resultado;
}
Espero se entienda cualquier duda haganla en clases o por medio del blog !! suerte

sábado, 23 de marzo de 2013

Esta sera la practica del primer parcial pueden imprimirla o sacarse fotocopia estará en la fotocopiadora de estadística  Descargar!!!!

lunes, 18 de marzo de 2013

Que tal Muchachos y muchachas espero le sirva esta sección les pondré todo referente a la materia ejemplos de Diagramas de Flujo y Algunos ejercicios Sencillos si hay alguna duda o quisiera ver algún tema especifico solo dejen un comentario y lo haremos tanto en clases como en el Blog

miércoles, 27 de febrero de 2013

Codeforces Round # 169 B div2

Problema.-
2 jugadores se deciden a jugar con una cadena el juego consiste

  •  gana el 1ero que forma una palabra palindroma 
  •  Si no es posible formar una palabra palindroma debe eliminar un carácter de la palabra
Los 2 jugadores perfectamente Diga quien ganara el Juego
Link del Problema
Solución.-
A mi parecer este ejercicio estaba mas fácil que el ejercicio A pues al ver es teoría de juegos, como juega siempre perfectamente, es común encontrar un formula.
tenemos 2 casos uno es si podemos formar una palabra palindroma y el otro eliminar un carácter
1er Caso¿Cuando una palabra es palindroma?
Nos podemos a pensar las palabras palindromas son las que dando la vuelta forman la misma palabra  EJ
ana, aabbaa, etc.
entonces vemos que pasa si ordenamos las cadenas aan, aaaabb tienen una propiedad que todos los caracteres deben ser un numero par y puede haber tan solo un caracter con cantidad impar.
Por Ejemplo para:
                                    ANA               A=2    N=1 Palindroma
                                    AABBAA        A=4    B=2  Palindroma
                                    AAABAA        A=5   B=1  No palindroma pues hay 2 impares
2do Caso
Ahora observemos que los 2 juegan perfectamente entonces cuando eliminen un carácter no dejara que el otro forme un palindrome entonces dependerá del ultimo carácter quien gana el juego entonces como el primer jugador sera el primero en eliminar entonces ganara solo cuando sea impar la longitud de la cadena y por complemento ganara en segundo Jugador.
Codigo.-

bool palin(string cad)
{
    vi v(27);
    int p=cad.size();
    REP(i,p)
    {
        v[cad[i]-'a']++;
    }
    int cont=0;
    REP(i,27)
    {
        if(v[i]%2!=0)
            cont++;
    }
    if(cont>1)
        return false;
    return true;
}
int main()
{
    string cad;
    cin>>cad;
    if(palin(cad))
        cout<<"First"<<endl;
    else
    {
        int l=cad.size();
        if(l%2==0)
             cout<<"Second"<<endl;
        else
             cout<<"First"<<endl;

    }
    return 0;
}

domingo, 24 de febrero de 2013

Codeforces Round # 169 A div2

Problema.- 

El problema era sencillo trataba sobre un equipo de programación que luego de haber participado en un concurso su entrenador les dio tiempo libre para ir almorzar el tiempo sera representado por k.
El equipo tenia una lista de los restaurantes con números fi y ti donde fi representaba la felicidad del grupo y ti el tiempo que tardarían en ese restaurante.
La tarea era hallar el numero máximo de felicidad con la condición que si ti>k la felicidad se mediría con 
fi-(ti-k) y si fuera menor entonces se debería tomar tan solo fi.
acceda al problema.

Solución.-

Al ver este problema no pensé mas que simulación así que a codificar tan solo era hallar el máximo de pares con la condición que nos daban pero había un caso en el cual la felicidad podía ser negativo entonces la variable max no debería empezar desde cero.

Codigo.-

int main()
{
int n,k;
   int max1=-(2<<29);
   cin>>n>>k;
   REP(i,n)
   {
       int t,f;
       cin>>f>>t;
       if(t>k)
        max1=max(max1,f-(t-k));
       else
        max1=max(max1,f);
   }
   cout<<max1<<endl;
   return 0;
}

sábado, 23 de febrero de 2013

Bievenidos


Bienvenido a mi blog Bit&Bit, que lo hice luego de tropezar tanto en mis búsquedas sobre temas de algoritmia y así poder ayudar a los demás y no tropiecen tanto como yo lo hice, intentare subir información constantemente con temas nuevos detallados comúnmente relacionado con la ACM-ICPC y espero les guste.
También subiré tutoriales sobre los diferentes Concursos en los cuales participo como Codeforces y Topcoder similar a los que vi en el blog de vexorian.