lunes, 16 de mayo de 2022

ICPC Maratón de programación - Concurso de Programación

 

https://onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=3&page=show_problem&problem=36

Ir a los enlaces y Resolver el problema: 100 - The 3n + 1 problem

Problem Set Volumes (100...1999)

Volume 1 (100-199)

100 - The 3n + 1 problem


https://onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=3&page=show_problem&problem=36


Solución

https://gist.github.com/minhazmiraz/0b65fb4c5e813810ee246e2b1f2aca4a

https://www.youtube.com/watch?v=lJZIiWSLXFc


#include<stdio.h>
int cycle(int a)
{
int i=0;
while(1)
{
i++;
if(a==1)
break;
if(a%2!=0)
a=(3*a)+1;
else
a=a/2;
}
return i;
}
int main()
{
int a,b,c,temp,i;
while(scanf("%d%d",&a,&b)==2)
{
int max=0;
printf("%d %d ",a,b);
if(a>b)
{
temp=a;
a=b;
b=temp;
}
for(i=a;i<=b;i++)
{
c=cycle(i);
if(c>=max)
max=c;
}
printf("%d\n",max);
}
return 0;
}



https://onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=3&page=show_problem&problem=37

101 - The Blocks Problem


Solución

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 25
#define InsMAX 25
int block_record[MAX] = {-1};
int block_pos[MAX][MAX];
void move_load(int src, int pos_src)
{
int i, j, k;
for(i = 0; i < MAX; i++)
{
if(block_pos[pos_src][i] == src)break;
}
for(j = i+1; j < MAX; j++)
{
if(block_pos[pos_src][j] == -1)break;
for(k = 0; k < MAX; k++)
{
if(block_pos[ block_pos[pos_src][j] ][k] == -1)
{
block_pos[ block_pos[pos_src][j] ][k] = block_pos[pos_src][j];
block_record[ block_pos[pos_src][j] ] = block_pos[pos_src][j];
break;
}
}
block_pos[pos_src][j] = -1;
}
}
void move(int src, int pos_des)
{
int i, j, k;
int pos_src = block_record[src];
for(i = 0; i < MAX; i++)
{
if(block_pos[pos_src][i] == src)break;
}
for(j = i; j < MAX; j++)
{
if(block_pos[pos_src][j] == -1)break;
for(k = 0; k < MAX; k++)
{
if(block_pos[pos_des][k] == -1)
{
block_pos[pos_des][k] = block_pos[pos_src][j];
block_record[ block_pos[pos_src][j] ] = pos_des;
break;
}
}
block_pos[pos_src][j] = -1;
}
}
void move_onto(int a, int b)
{
int pos_a = block_record[a];
int pos_b = block_record[b];
move_load(a, pos_a);
move_load(b, pos_b);
move(a, pos_b);
}
void move_over(int a, int b)
{
int pos_a = block_record[a];
int pos_b = block_record[b];
move_load(a, pos_a);
move(a, pos_b);
}
void pile_onto(int a, int b)
{
int pos_a = block_record[a];
int pos_b = block_record[b];
move_load(b, pos_b);
move(a, pos_b);
}
void pile_over(int a, int b)
{
int pos_a = block_record[a];
int pos_b = block_record[b];
move(a, pos_b);
}
int main()
{
/*declartion & initialization*/
int num, a, b;
scanf("%d", &num);
int i, j;
for(i = 0; i < MAX; i++)
{
for(j = 0; j < MAX; j++)block_pos[i][j] = -1;
}
for(i = 0; i < num; i++)block_record[i] = i; //initialize position
for(i = 0; i < num; i++)block_pos[i][0] = i;
char instruction[InsMAX];
char movement[InsMAX];
char position[InsMAX];
gets(instruction); //take away "\n"
/*get instruction*/
while(gets(instruction))
{
if(strcmp(instruction, "quit") == 0)break;
sscanf(instruction, "%s %d %s %d", movement, &a, position,&b);
//***************check error
if(a == b || block_record[a]==block_record[b])continue;
/*************************************/
if(strcmp(movement, "move") == 0 && strcmp(position, "onto") == 0)
{
move_onto(a, b);
}
else if(strcmp(movement, "move") == 0 && strcmp(position, "over") == 0)
{
move_over(a, b);
}
else if(strcmp(movement, "pile") == 0 && strcmp(position, "onto") == 0)
{
pile_onto(a, b);
}
else if(strcmp(movement, "pile") == 0 && strcmp(position, "over") == 0)
{
pile_over(a, b);
}
else
{
return 1;
}
}
/*print all*/
for(i = 0; i < num; i++)
{
printf("%d:", i);
for(j = 0; j < MAX; j++)
{
if(block_pos[i][j] == -1)
{
printf("\n");
break;
}
printf(" ");
printf("%d", block_pos[i][j]);
}
}
//system("pause");
return 0;
}



ICPC

Maratón de Programación


https://onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8


https://web.stanford.edu/class/cs97si/


https://eprints.ucm.es/id/eprint/38650/1/Ejercicios%20interactivos%20en%20Juez%20Evaluador%20de%20Problemas_Final.pdf



https://onlinejudge.inf.um.es/curso/leccion1.2.pdf


No hay comentarios:

Publicar un comentario