Você está na página 1de 23

1920 UAb Prog. Exercícios 1  1700290@estudante.uab.

pt

You can view this report online at : https://www.hackerrank.com/x/tests/557924/candidates/18372244/report

Full Name: Abel da Piedade Pereira

Email: 1700290@estudante.uab.pt
46% scored in 1920 UAb Prog.
Test Name: 1920 UAb Prog. Exercícios 1 Exercícios 1 in 42645 min 43
512/1115 sec on 16 Oct 2020 11:41:06
Taken On: 16 Oct 2020 11:41:06 WEST
WEST
Time Taken: 42645 min 43 sec/ 43200 min

Linkedin: http://www.linkedin.com/in/abel-pereira-029a0bab

Invited by: José

Skills Score:

Tags Score:

Recruiter/Team Comments:

No Comments.

Plagiarism flagged

We have marked questions with suspected plagiarism below. Please review.

Question Description Time Taken Score Status

Q1 1) Exercícios  Multiple Choice 2 min 15 sec 2.5/ 5 


Q2 olamundosizeof.c  Coding 15 min 29 sec 10/ 10 
Q3 soma.c  Coding 11 hour 10 min 40/ 40 
Q4 hms.c  Coding 21 min 40/ 40 
Q5 produto.c  Coding 1 hour 28 min 7 sec 40/ 40 
Q6 arranjos.c  Coding
12 hour 43 min 40
sec
60/ 60 
Q7 somadigitos.c  Coding 1 hour 21 min 15 sec 80/ 80 
Q8 fibonacci.c  Coding 8 hour 11 min 39 sec 80/ 80 
Q9 combinacoes.c  Coding
22 hour 47 min 58
sec
80/ 80 
Q10 euler.c  Coding 7 hour 51 min 6 sec 80/ 80 
Q11 trocos.c  Coding 2 day 4 hour 52 min 0/ 100 
/
41 sec

Q12 primo.c  Coding 41 min 35 sec 0/ 100 


Q13 triplasoma.c  Coding 7 sec 0/ 120 
Q14 pi.c  Coding 6 sec 0/ 120 
Q15 formularesolvente.c  Coding 5 sec 0/ 160 

QUESTION 1 1) Exercícios 

Multiple Choice

Correct Answer
QUESTION DESCRIPTION

Notas gerais a ter em atenção em todos os exercícios:


Score 2.5
Escreva sem acentos;
Utilize para as variáveis inteiras, o tipo int, confirmando que tem 4 bytes no exercício
olamundosizeof.c, caso contrário utilize o tipo equivalente;
Utilize para as variáveis reais a precisão dupla, o tipo double;
Durante o desenvolvimento do programa, imprima resultados parciais, de forma a garantir o que o
programa faz, eventualmente comentando esse código na versão final;
O separador decimal da linguagem C é o ponto final, pelo que será utilizado nos resultados dos
exercícios (12.435 é correcto, 12,435 é incorrecto), mas na introdução dos dados e impressão dos
resultados, poderá variar conforme as configurações no computador;
Se não consegue resolver um exercício, pense numa variável auxiliar que lhe dê jeito;
Existem dicas adicionais sobre alguns exercícios no anexo Exercícios: Dicas, Respostas e Resoluções,
bem como forma de validar a resposta de um exercício sem ver uma resolução, e resoluções dos
exercícios para comparar após resolvê-los.
As dicas adicionais são colocadas também no final do exercício, a cor branca. Deve selecionar o texto
para poder ler, mas apenas caso não consiga resolver.
Em alguns exercícios é necessário colocar o texto a solicitar dados ao utilizador, outros simplesmente
assumem que o utilizador irá introduzir os dados de entrada pela ordem especificada. Se tiver
dúvidas, verifique no caso de teste, qual das situações se aplica.

Ação: selecione as frases corretas

CANDIDATE ANSWER

Options: (Expected answer indicated with a tick)

As dicas adicionais são essenciais para resolver os exercícios

Nos tipos inteiros deve-se utilizar int

Nos tipos reais deve-se utilizar o tipo float

As dicas adicionais estão também no final do exercício.

No Comments

/
QUESTION 2 olamundosizeof.c 

Coding

Needs Review
QUESTION DESCRIPTION

|__| Faça um programa que coloque Olá Mundo! numa linha e em bom português (com acentos), e que
Score 10
indique o tamanho em bytes (operador sizeof) dos seguintes tipos de dados: char; short; int; long; long
long; float; double; long double. Coloque um valor em cada linha.

Execução de exemplo:

C:\>olamundosizeof

Olá Mundo!
sizeof(char): xx
sizeof(short): xx
sizeof(int): xx
sizeof(long): xx
sizeof(long long): xx
sizeof(float): xx
sizeof(double): xx
sizeof(long double): xx

Nota: em vez de xx o programa deve apresentar o valor correto. Por exemplo, no sizeof(char) deverá estar
1, dado que um caracter ocupa um byte.

CANDIDATE ANSWER

Language used: C

1 #include <stdio.h>
2
3 int main()
4 {
5 printf("Olá Mundo!");
6 printf("\nsizeof(char): %d", sizeof(char));
7 printf("\nsizeof(short): %d", sizeof(short));
8 printf("\nsizeof(int): %d", sizeof(int));
9 printf("\nsizeof(long): %d", sizeof(long));
10 printf("\nsizeof(long long): %d", sizeof(long));
11 printf("\nsizeof(float): %d", sizeof(float));
12 printf("\nsizeof(double): %d", sizeof(double));
13 printf("\nsizeof(long double): %d", sizeof(long double));
14
15 }

TESTCASE DIFFICULTY TYPE STATUS SCORE TIME TAKEN MEMORY USED

Testcase 0 Easy Sample case  Success 10 0.0316 sec 7.36 KB

No Comments

QUESTION 3 soma.c 

Coding

Correct Answer
QUESTION DESCRIPTION

|__| Somar os primeiros N números inteiros, sendo N definido pelo utilizador.


Score 40

Notas:
/
Notas:
Escreva sem acentos neste e nos restantes exercícios, para que o código funcione sempre
corretamente.
Durante o desenvolvimento do programa, imprima resultados parciais, de forma a garantir o que o
programa faz, eventualmente comentando esse código na versão final, dado que esse texto poderá
fazer sentido apenas para o programador e não para o utilizador.
Neste exemplo, deixe o código com os parciais, exatamente conforme indicado na execução de
exemplo seguinte.

Execução de exemplo (com resultados parciais):

C:\>soma
Calculo da soma dos primeiros N numeros.
Indique N:10

adicionar 1, parcial 1
adicionar 2, parcial 3
adicionar 3, parcial 6
adicionar 4, parcial 10
adicionar 5, parcial 15
adicionar 6, parcial 21
adicionar 7, parcial 28
adicionar 8, parcial 36
adicionar 9, parcial 45
adicionar 10, parcial 55
Total: 55

Execução de exemplo (sem resultados parciais):

C:\>soma
10
55

Entrada:
N - número inteiro

Saída:
Todos os resultados parciais, de acordo com a execução de exemplo em cima

Atenção: existem dois espaços nas linhas de parciais antes da palavra "adicionar", e não apenas um
espaço.
Atenção: a frase inicial deve estar exactamente como na execução de exemplo "Calculo da soma dos
primeiros N numeros.", não coloque acentos nem adicione espaços.

CANDIDATE ANSWER

Language used: C

1 #include <stdio.h>
2
3 int main()
4 {
5 int N, parcial, adicionar;
6
7 printf("Calculo da soma dos primeiros N numeros.\nIndique N: ");
8 /* ler na entrada de dados, o valor N solicitado*/
9 scanf("%d", &N);
10
11 adicionar=0;
12 parcial=1;
13
14 while(parcial<=N)
15 { /* coloque em resultado a soma dos primeiros
/
5 { / co oque e esu tado a so a dos p e os
16 N números inteiros*/
17
18 adicionar=adicionar+parcial;
19
20 /* a meio, mostrar o resultado parcial */
21 printf("\n adicionar %d, parcial %d", parcial, adicionar);
22 parcial++;
23
24 }
25
26 /* mostrar resultado final */
27 printf("\nTotal: %d\n", adicionar);
28 }

TESTCASE DIFFICULTY TYPE STATUS SCORE TIME TAKEN MEMORY USED

Testcase 0 Easy Sample case  Success 10 0.0258 sec 7.63 KB

Testcase 2 Easy Sample case  Success 10 0.0268 sec 7.51 KB

Testcase 3 Easy Hidden case  Success 10 0.026 sec 7.49 KB

Testcase 4 Easy Hidden case  Success 10 0.0335 sec 7.44 KB

No Comments

QUESTION 4 hms.c 

Coding

Correct Answer
QUESTION DESCRIPTION

|__| Faça um programa que leia as horas, minutos e segundos, e calcule o número de segundos que
Score 40
passaram desde o início do dia.

Notas:
Não faça verificação da validade dos parâmetros de entrada

Execução de exemplo:

C:\>hms
Calculo do numero de segundos desde o inicio do dia.
Hora: 2
Minuto: 15
Segundos: 30
Numero de segundos desde o inicio do dia: 8130

Entrada:
Hora, Minuto, segundo - valores inteiros
Saída:
Segundos desde o início do dia
Atenção: repare que o output tem frases que supostamente devem estar em linhas distintas, na mesma
linha. Isso deve-se a que o input é que troca de linha, ficando o output todo na mesma linha. Veja na
execução de exemplo, os dados de entrada 2, 15 e 30 são seguidos de um RETURN, mudança de linha. A
não existir esse return, que faz parte dos dados de entrada (input), a frase seguinte continuaria na mesma
linha. O HackerRank apresenta o input e output em zonas distintas, pelo que existe mudança de linha
apenas no input, e não no output.

CANDIDATE ANSWER

/
Language used: C

1 #include <stdio.h>
2
3 int main()
4 {
5 int Hora, Minuto, Segundos;
6
7 printf("Calculo do numero de segundos desde o inicio do dia.\n");
8 printf("Hora: ");
9 scanf("%d", & Hora);
10
11 printf("Minuto: ");
12 scanf("%d", & Minuto);
13
14 printf("Segundos: ");
15 scanf("%d", & Segundos);
16
17 printf("Numero de segundos desde o inicio do dia: %d",Segundos+
18 (Minuto*60)+(Hora*3600));
19
20
}

TESTCASE DIFFICULTY TYPE STATUS SCORE TIME TAKEN MEMORY USED

Testcase 0 Easy Sample case  Success 10 0.0346 sec 7.44 KB

Testcase 2 Easy Sample case  Success 10 0.0269 sec 7.53 KB

Testcase 3 Easy Hidden case  Success 10 0.0246 sec 7.53 KB

Testcase 4 Easy Hidden case  Success 10 0.0286 sec 7.5 KB

No Comments

QUESTION 5 produto.c 

Coding

Correct Answer
QUESTION DESCRIPTION

|__| Multiplicar os primeiros N números inteiros positivos (factorial de N), sendo N definido pelo utilizador.
Score 40

Execução de exemplo (com parciais):

C:\>produto
Calculo do produto dos primeiros N numeros.
Indique N:5
Factorial(1)=1
Factorial(2)=2
Factorial(3)=6
Factorial(4)=24
Factorial(5)=120
Resultado: 120

Execução de exemplo (sem parciais):

C:\>produto
5
120

/
Entrada:
N - número inteiro
Saída:
Resultado com os parciais, de acordo com o exemplo em cima
Atenção: existem dois espaços a preceder a palavra "Factorial"

CANDIDATE ANSWER

Language used: C

1 #include <stdio.h>
2
3 int main()
4 {
5 int i=0, N, factorial=1;
6
7 printf("Calculo do produto dos primeiros N numeros.\nIndique N:");
8 scanf("%d", &N);
9
10 while(i<N)
11 {
12 factorial+=i*factorial;
13 i++;
14
15 printf(" Factorial(%d)=%d\n", i, factorial);
16 }
17
18 printf("Resultado: %d", factorial);
19 }

TESTCASE DIFFICULTY TYPE STATUS SCORE TIME TAKEN MEMORY USED

Testcase 0 Easy Sample case  Success 10 0.0283 sec 7.52 KB

Testcase 2 Easy Sample case  Success 10 0.0289 sec 7.57 KB

Testcase 3 Easy Hidden case  Success 10 0.0248 sec 7.51 KB

Testcase 4 Easy Hidden case  Success 10 0.0264 sec 7.62 KB

No Comments

QUESTION 6 arranjos.c 

Coding

Needs Review
QUESTION DESCRIPTION

|__| Calculo dos arranjos de N, R a R: multiplicar os números de N-R+1 até N.


Score 60

Notas:
Atenção que R tem de ser menor que N
Os arranjos de 3 elementos {A, B, C}, 2 a 2, são os seguintes 6: (A,B); (A,C); (B,A); (B,C); (C,A); (C,B).

Execução de exemplo (com parciais):

C:\>arranjos
Calculo dos arranjos de N, R a R:
Indique N:5
Indique R:3
i=3; arranjos=3
i=4; arranjos=12
/
i=4; arranjos=12
i=5; arranjos=60
Resultado: 60

Execução de exemplo (sem parciais):

C:\>arranjos
5
3
60

Entrada:
N, R - valores inteiros
Saída:
Resultado com os parciais, de acordo com o exemplo em cima. Caso não seja possível o calculo,
retornar a mensagem "Erro: N tem de ser maior que R e este maior que 0."

Ajudas extra (selecionar para mostrar):


Não consigo acertar apenas um dos testes: combinações 20 8 a 8 dá o valor 5079110400.
O valor correto de combinações 20, 8 a 8 é realmente esse. No entanto essa não é a resposta
correta ao exercício, que deve ser resolvido com inteiros de 4 bytes. Troque todas as variáveis
inteiras para inteiros de 4 bytes e execute novamente o programa.
Vários resultados errados. Calculo N! e (N-R)!, e depois divido um valor pelo o outro, conforme a
fórmula na wikipédia
Calculando ambos os fatoriais está a fazer não só mais contas, como também ultrapassa o limite
dos inteiros mais cedo, atendendo que o factorial cresce muito rapidamente. Se tiver um valor
de R pequeno, pode conseguir calcular arranjos mesmo com um N grande, em que não consegue
obter o factorial de N, mas consegue obter arranjos de N, R a R. Utilizar um tipo mais potente,
resolve o problema do limite para valores pequenos, mas teria o problema à mesma para muitos
valores que poderiam ser calculados pela segunda fórmula. Atenção que todos os tipos inteiros
devem ter 4 bytes, atendendo a que os exercícios estão equilibrados para esse tipo de dados.

CANDIDATE ANSWER

Language used: C

1 #include <stdio.h>
2
3 int main()
4 {
5 int N, R, i, A;
6
7 printf("Calculo dos arranjos de N, R a R:\nIndique N:");
8 scanf("%d", &N);
9 printf("Indique R:");
10 scanf("%d", &R);
11 /*Para o calculo, nao e possivel que N seja menor que R e R tem de ser
12 maior que 0. Caso o utilizador colocque dados que nao respeitam esta
13 condicao, o programa nao continua e indica qual o erro.*/
14 if(N<R || R<=0)
15 printf("Erro: N tem de ser maior que R e este maior que 0.\n");
16 else
17 {
18 i=N-R+1;
19 A=1;
20 while(i<=N)
21 {
22 A=A*i;
23 printf(" i=%d; arranjos=%d\n",i,A);
/
24 i++;
25 }
26 printf("Resultado: %d", A);
}
}

TESTCASE DIFFICULTY TYPE STATUS SCORE TIME TAKEN MEMORY USED

Testcase 0 Easy Sample case  Success 2 0.0284 sec 7.48 KB

Testcase 1 Easy Sample case  Success 2 0.0248 sec 7.44 KB

Testcase 2 Easy Sample case  Success 2 0.0322 sec 7.49 KB

Testcase 3 Easy Sample case  Success 2 0.0232 sec 7.37 KB

Testcase 4 Easy Hidden case  Success 2 0.0277 sec 7.62 KB

Testcase 5 Easy Hidden case  Success 10 0.0251 sec 7.48 KB

Testcase 6 Easy Hidden case  Success 10 0.0269 sec 7.56 KB

Testcase 7 Easy Hidden case  Success 10 0.0251 sec 7.51 KB

Testcase 8 Easy Hidden case  Success 10 0.0271 sec 7.52 KB

Testcase 9 Easy Hidden case  Success 10 0.0329 sec 7.53 KB

No Comments

QUESTION 7 somadigitos.c 

Coding

Needs Review
QUESTION DESCRIPTION

|__| Calcule a soma dos quadrados dos dígitos de um número introduzido pelo utilizador.
Score 80

Notas (selecionar para mostrar):


Pode obter o valor do dígito mais baixo, calculando o resto da divisão por 10.
Mostre o resultado parcial, neste e nos restantes exercícios.

Execução de exemplo (com parciais):

C:\>somadigitos
Calculo da soma do quadrado dos digitos de um numero:
Numero: 1234
n=1234; soma=16
n=123; soma=25
n=12; soma=29
n=1; soma=30
Resultado: 30

Execução de exemplo (sem parciais):

C:\>somadigitos
1234
30

Entrada:
N - número inteiro
Saída:
Resultado da execução com parciais, de acordo com a execução em cima.

/
CANDIDATE ANSWER

Language used: C

1 #include <stdio.h>
2
3 int main()
4 {
5 int numero, soma=0;
6 printf("Calculo da soma do quadrado dos digitos de um numero:");
7 printf("\nNumero: ");
8 scanf("%d", &numero);
9
10 while (numero != 0)
11 {
12 soma=soma+(numero % 10)*(numero % 10);
13
14 printf(" n=%d; soma=%d\n", numero, soma);
15 /*Calcular o valor do numero /10, para assim se retomar de novo o
16 calculo do quadrado do resto da divisao do numero - linha 12*/
17 numero=numero/10;
18
19 }
20 printf("\Resultado: %d", soma);
}

TESTCASE DIFFICULTY TYPE STATUS SCORE TIME TAKEN MEMORY USED

Testcase 0 Easy Sample case  Success 10 0.0439 sec 7.53 KB

Testcase 1 Easy Sample case  Success 10 0.0254 sec 7.61 KB

Testcase 2 Easy Sample case  Success 10 0.0401 sec 7.5 KB

Testcase 3 Easy Sample case  Success 10 0.037 sec 7.43 KB

Testcase 4 Easy Hidden case  Success 10 0.0379 sec 7.63 KB

Testcase 5 Easy Hidden case  Success 10 0.0274 sec 7.63 KB

Testcase 6 Easy Hidden case  Success 10 0.0277 sec 7.66 KB

Testcase 7 Easy Hidden case  Success 10 0.0227 sec 7.44 KB

No Comments

QUESTION 8 fibonacci.c 

Coding

Needs Review
QUESTION DESCRIPTION

|__| Calcular o valor da função Fibonacci {definição da função Fibonacci não padrão}, para um dado
Score 80
argumento N. Para N=1 ou 2, deve retornar N, caso contrário retorna a soma dos dois valores anteriores.

Notas (selecionar para mostrar):


Utilize duas variáveis auxiliares.

Execução de exemplo (com parciais):

C:\>fibonacci
Calculo do valor da funcao Fibonacci:
Indique N:6
/
Fib(3)=3
Fib(4)=5
Fib(5)=8
Fib(6)=13
Resultado: 13

Execução de exemplo (sem parciais):

C:\>fibonacci
6
13

Entrada:
N - valor de entrada
Saída:
Resultado de Fibonacci de N (de acordo com a definição do enunciado), e com resultados parciais,
conforme execução em cima.

Ajudas extra (selecionar para mostrar):


Não compreendo a função / o que se pede
Esta a função Fibonacci(N) tem uma definição recursiva. Para os valores de N=1 e 2, aplica-se N,
sendo portanto 1 e 2, respectivamente. Para N=3 ou superior, aplica-se Fibonacci(N-1) +
Fibonacci(N-2) e retorna a soma dos dois valores imediatamente anteriores.

Exemplos:
•F(3)=F(2)+F(1)=2+1=3
•F(4)=F(3)+F(2)=3+2=5
•F(5)=F(4)+F(3)=5+3=8
•F(6)=F(5)+F(4)=8+5=13

CANDIDATE ANSWER

Language used: C

1 #include <stdio.h>
2
3 int main()
4 {
5 int i, j, N, Resultado, contagem=3;
6
7 printf("Calculo do valor da funcao Fibonacci:\n");
8 printf("Indique N:");
9 scanf("%d", &N);
10 if(N<=0)
11 printf("Indique um numero positivo maior que 1.");
12 else
13 {
14 Resultado=N;
15 if(N>2)
16 {
17 /*Primeiros dois numeros da serie de Fibonacci */
18 i=1;
19 j=2;
20 /* Resultado da soma dos numeros anteriores 2+1=3. (O numero
21 seguinte)*/
22 Resultado=3;
23 while(contagem<= N)
24 {
25 Resultado=i+j;

/ 26 i j
26 i=j;
27 j=Resultado;
28 printf(" Fib(%d)=%d\n", contagem, j);
29 contagem++;
30 }
31 }
32 printf("Resultado: %d", Resultado);
33 }
}

TESTCASE DIFFICULTY TYPE STATUS SCORE TIME TAKEN MEMORY USED

Testcase 0 Easy Sample case  Success 10 0.034 sec 7.38 KB

Testcase 1 Easy Sample case  Success 10 0.0264 sec 7.52 KB

Testcase 2 Easy Sample case  Success 10 0.0312 sec 7.52 KB

Testcase 3 Easy Sample case  Success 10 0.0281 sec 7.51 KB

Testcase 4 Easy Hidden case  Success 10 0.0231 sec 7.44 KB

Testcase 5 Easy Hidden case  Success 10 0.029 sec 7.62 KB

Testcase 6 Easy Hidden case  Success 10 0.0272 sec 7.54 KB

Testcase 7 Easy Hidden case  Success 10 0.0309 sec 7.5 KB

No Comments

QUESTION 9 combinacoes.c 

Coding

Correct Answer
QUESTION DESCRIPTION

|__| Calcule as combinações de N, R a R: multiplicar os números de N-R+1 até N, dividindo o resultado


Score 80
pelo factorial de R (produto de todos os números de 1 a R).

Notas:
Se efectuar as multiplicações e só dividir no final, rapidamente ultrapassa o limite do inteiro. Se
multiplicar e depois dividir em cada passo, consegue obter valores correctos para uma maior gama de
números.
As combinações de 3 elementos {A, B, C}, 2 a 2, são as seguintes 3: {A,B}; {A,C}; {B,C}. Notar que
relativamente aos arranjos, neste caso a ordem não interessa.

Execução de exemplo (com parciais):

C:\>combinacoes
Calculo das combinacoes de N, R a R:
Indique N:5
Indique R:3
1*3=3, 3/1=3
3*4=12, 12/2=6
6*5=30, 30/3=10
Resultado: 10

Execução de exemplo (sem parciais):

C:\>combinacoes
5
3
10

Entrada:
N R inteiros
/
N, R - inteiros
Saída:
Resultado com execução passo a passo, de acordo com exemplo em cima

CANDIDATE ANSWER

Language used: C

1 #include <stdio.h>
2
3 int main()
4 {
5 int n, r, x=1, i=1, c;
6
7 printf("Calculo das combinacoes de N, R a R:");
8 /*O utilizador devera digitar numeros inteiros para N e R, sendo que N>R
9 e R>0 */
10 printf("\nIndique N:");
11 scanf("%d", &n);
12 printf("Indique R:");
13 scanf("%d", &r);
14
15 if(n<r || n<=0)
16 printf("Erro: N tem de ser maior que R e maior que 0.");
17 else
18 /* Formula de calculo das Combinacoes: C n,r = n! /r!(n-r)! */
19 i=1;
20 c=1;
21 {
22 while(i<=r)
23 {
24 /*Partida da situacao: combinacao(c)=1 */
25 printf(" %d",c);
26 /*Calculo do produtorio de c*/
27 c *= n-r+i;
28 /*mostra o resultado */
29 printf("*%d=%d,", n-r+i, c);
30 /*retoma o resultado e o 'i'*/
31 printf(" %d/%d", c, i);
32 /*divide c por 'i'*/
33 c/=i;
34 printf("=%d\n", c);
35 i++;
36 }
37 printf("Resultado: %d",c );
38 }
}

TESTCASE DIFFICULTY TYPE STATUS SCORE TIME TAKEN MEMORY USED

Testcase 0 Easy Sample case  Success 10 0.0252 sec 7.53 KB

Testcase 1 Easy Sample case  Success 10 0.0407 sec 7.59 KB

Testcase 2 Easy Sample case  Success 10 0.0421 sec 7.53 KB

Testcase 3 Easy Hidden case  Success 10 0.0276 sec 7.48 KB

Testcase 4 Easy Hidden case  Success 10 0.0447 sec 7.59 KB

Testcase 5 Easy Hidden case  Success 10 0.0468 sec 7.62 KB

Testcase 6 Easy Hidden case  Success 10 0.0407 sec 7.52 KB

/ 
Testcase 7 Easy Hidden case  Success 10 0.0559 sec 7.5 KB

No Comments

QUESTION 10 euler.c 

Coding

Correct Answer
QUESTION DESCRIPTION

|__| Calcular o número de Euler e, através da utilização da série de Taylor para ex quando x=1: soma dos
Score 80
inversos dos fatoriais, de 0 a K, com K a tender para infinito: 1/0! + 1/1! + 1/2! + ... + 1/K!

Notas:
Considere o fatorial de zero como sendo 1 (N! é o fatorial de N, sendo o produto dos números de 1 a
N)
Utilize a precisão dupla para valores reais, neste e em outros exercícios
Na função printf pode imprimir um número real em notação científica, e especificando a precisão a
16 dígitos utilizando a string de formatação: %.16g

«34»Execução de exemplo (com parciais, K=20):

C:\>euler
0: 1
1: 2
...
19: 2.7183
20: 2.7183
Resultado: 2.71828182845xxxx

Entrada:
K - número de elementos da série a somar
Saída:
Resultado - sem parciais, como na execução em baixo

Execução de exemplo (sem parciais):

C:\>euler
2
2.5

Atenção: verifique que já não é preciso mostrar os parciais. Após terminar os testes, remova todos os
parciais e apresente apenas o resultado final.

CANDIDATE ANSWER

Language used: C

1 #include <stdio.h>
2
3 int main()
4 {
5 double f=1, e=0;
6 int i=0, k;
7
8 /*printf("k>0",k)*/
9 scanf("%d",&k);
10 /*Condicao para iniciar = k>0, se nao for cumprida termina o programa*/
11 if(k>0);
/
11 if(k>0);
12
13 else(k>0);
14 while(i<=k)
15 {
16 if(i>1)
17 /*Calculo do fatorial*/
18 f*=i;
19 /*Formula de caculo de cada 'e' e soma e divisao do fatorial
20 anterior*/
21 e+=1/f;
22 /*printf(" %d: %.16g \n", i, e); */
23 i++;
24 }
25 /*printf("Resultado: %.16g", e);*/
26 printf("%.16g",e);
}

TESTCASE DIFFICULTY TYPE STATUS SCORE TIME TAKEN MEMORY USED

Testcase 0 Easy Sample case  Success 10 0.0279 sec 7.57 KB

Testcase 1 Easy Sample case  Success 10 0.0252 sec 7.53 KB

Testcase 2 Easy Sample case  Success 10 0.0296 sec 7.63 KB

Testcase 3 Easy Hidden case  Success 10 0.0275 sec 7.61 KB

Testcase 4 Easy Hidden case  Success 10 0.0261 sec 7.63 KB

Testcase 5 Easy Hidden case  Success 10 0.0242 sec 7.53 KB

Testcase 6 Easy Hidden case  Success 20 0.025 sec 7.63 KB

No Comments

QUESTION 11 trocos.c 

Coding

Wrong Answer
QUESTION DESCRIPTION

|__| Faça um programa que receba um montante em euros (com cêntimos), e que determina o menor
Score 0
número de moedas de cada tipo necessário para perfazer esse montante. Pode utilizar moedas de euros
de todos os valores disponíveis (2€, 1€, ...).

Notas:
Deve efectuar os arredondamentos para a unidade mais próxima, no caso de o utilizador introduzir
um valor com precisão abaixo do cêntimo.

Execução de exemplo:

C:\>trocos
Introduza um montante em euros, podendo ter centimos: 1.79
1 euro: 1
50 centimos: 1
20 centimos: 1
5 centimos: 1
2 centimos: 2

Entrada:
Montante - valor real
Saída:
Replicar a saída na execução de exemplo
/
CANDIDATE ANSWER

Language used: C

1 #include <stdio.h>
2
3 int main()
4 {
5
6 double valor;
7 int x, moedas, euro2, euro1, centimos50, centimos20, centimos10, centimos5,
8 centimos2, centimos1;
9
10 printf("Introduza um montante em euros, podendo ter centimos: ");
11 scanf("%lf", &valor);
12
13 if(valor>0)
14 { /*printf("\n %f\n",valor);*/
15 x=(valor+0.005)*100;
16 { /* printf("total em centimos %d\n", x);*/
17
18 while(euro2%200<=0)
19 {
20 euro2+=x/200;
21 if(euro2>0)
22 printf("2 euros: %d\n", euro2);
23 euro2++;
24 }
25 /*valor remanescente em centimos*/
26 moedas=x%200;
27
28 while(euro1%100<=0)
29 {
30 euro1+=moedas/100;
31 if(euro1>0)
32 printf("1 euro: %d\n", euro1);
33 euro1++;
34 }
35 /*valor remanescente em centimos*/
36 moedas=moedas-(50*euro1);
37
38 while(centimos50%50<=0)
39 {
40 centimos50+=moedas/50;
41 if(centimos50>0)
42 printf("50 centimos: %d\n", centimos50);
43 centimos50++;
44 }
45 /*valor remanescente em centimos*/
46 moedas=moedas-(25*centimos50);
47
48 while(centimos20%20<=0)
49 {
50 centimos20+=moedas/20;
51 if(centimos20>0)
52 printf("20 centimos: %d\n", centimos20);
53 centimos20++;
54 }
55 /*valor remanescente em centimos*/
56 moedas=moedas-(10*centimos20);
57
58 while(centimos10%10<=0)
/
59 {
60 centimos10+=moedas/10;
61 if(centimos10>0)
62 printf("10 centimos: %d\n", centimos10);
63 centimos10++;
64 }
65 /*valor remanescente em centimos*/
66 moedas=moedas-(5*centimos10);
67
68 if(centimos5%5<=1)
69 centimos5=moedas/5;
70
71 if(centimos5>0)
72 printf("5 centimos: %d\n", centimos5);
73
74 moedas=moedas-5*centimos5;
75
76 if(centimos2%2<=1)
77 centimos2=moedas/2;
78 printf("2 centimos: %d\n", centimos2);
79
80 moedas=moedas-(2*centimos5);
81
82 if(centimos1%1<=1)
83 centimos1=moedas/1;
84
85
86 printf("1 centimo: %d", centimos1);
87
88 }
89
90
91
92 }
93
94 else
95 printf("\nErro indique um valor superior a 0 centimos");
96
}

TESTCASE DIFFICULTY TYPE STATUS SCORE TIME MEMORY


TAKEN USED

Testcase 0 Easy Sample  Wrong Answer 0 0.0244 sec 7.63 KB


case

Testcase 1 Easy Sample  Terminated due to 0 2.0024 sec 6.96 KB


case timeout

Testcase 2 Easy Sample  Wrong Answer 0 0.0269 sec 7.49 KB


case

Testcase 3 Easy Hidden case  Terminated due to 0 2.0028 sec 6.97 KB


timeout

Testcase 4 Easy Hidden case  Wrong Answer 0 0.0395 sec 7.54 KB

Testcase 5 Easy Hidden case  Wrong Answer 0 0.0387 sec 7.52 KB

Testcase 6 Easy Hidden case  Terminated due to 0 2.0023 sec 7.03 KB


timeout

Testcase 7 Easy Hidden case  Terminated due to 0 2.0033 sec 6.94 KB


timeout

Testcase 8 Easy Hidden case  Wrong Answer 0 0.0257 sec 7.65 KB

Testcase 9 Easy Hidden case  Terminated due to 0 2.0032 sec 6.95 KB


/
timeout

No Comments

QUESTION 12 primo.c 

Coding

Wrong Answer
QUESTION DESCRIPTION

|__| Faça um programa que verifica se um determinado número N é um número primo. Um número é primo
Score 0
se é divisível apenas por ele próprio e pela unidade. Se não for primo deve identificar o menor número pelo
qual é divisível.

Notas:
É suficiente testar até à raiz quadrada de N (pode utilizar a função sqrt da biblioteca math.h)
Em vez de calcular a raiz quadrada de N, pode calcular o quadrado do divisor.

«35»Execução de exemplo (com parciais):

C:\>primo
Funcao que verifica se um numero N e' primo:
Indique N:99
2
Numero divisível por 3

C:\>primo
Funcao que verifica se um numero N e' primo:
Indique N:97
2 3 4 5 6 7 8 9
Numero primo!

Entrada:
N - número inteiro
Saída:
Resultado, sem parciais - menor número que divide N, ou 0 no caso de N ser primo

Execução de exemplo (sem parciais):

C:\>primo
99
3
C:\>primo
97
0

CANDIDATE ANSWER

Language used: C

1 #include <math.h>
2 #include <stdio.h>
3
4 int main()
5 {
6
7 int numero, divisor=2;
8 printf("Indique um numero: \n");
9 scanf("%d", &numero);
10
/
10
11 while(divisor*divisor<numero)
12 {
13 divisor=2;
14 while(numero%divisor==0)
15 {printf ("Numero divisivel por %d\n", divisor);
16 divisor++;
17 }
18
19
20
21 printf("primo");
22
23 }
24
25 }

TESTCASE DIFFICULTY TYPE STATUS SCORE TIME TAKEN MEMORY USED

Testcase 0 Easy Sample case  Runtime Error 0 1.0735 sec 6.84 KB

Testcase 1 Easy Sample case  Runtime Error 0 1.0656 sec 6.89 KB

Testcase 2 Easy Hidden case  Runtime Error 0 1.012 sec 6.98 KB

Testcase 3 Easy Hidden case  Runtime Error 0 0.8155 sec 6.84 KB

Testcase 4 Easy Hidden case  Runtime Error 0 1.0778 sec 6.86 KB

Testcase 5 Easy Hidden case  Runtime Error 0 1.0787 sec 6.97 KB

Testcase 6 Easy Hidden case  Runtime Error 0 1.0841 sec 6.9 KB

Testcase 7 Easy Hidden case  Runtime Error 0 1.0734 sec 7.03 KB

Testcase 8 Easy Hidden case  Runtime Error 0 1.1026 sec 7.03 KB

Testcase 9 Easy Hidden case  Runtime Error 0 1.0463 sec 6.95 KB

Testcase 10 Easy Hidden case  Runtime Error 0 1.133 sec 6.92 KB

No Comments

/
QUESTION 13 triplasoma.c 

Coding

Wrong Answer
QUESTION DESCRIPTION

|__| Dado um inteiro positivo N, escrever todas as decomposições distintas possíveis como soma de três
Score 0
inteiros positivos (considerar iguais as triplas com os mesmos valores mas por outra ordem). Calcular
também o número de somas distintas.

Notas:
Assumir que os números mais altos aparecem sempre primeiro.

Execução de exemplo (com parciais):

C:\>triplasoma
Escreva um numero para decompor em somas de tres parcelas.
Numero:7
5+1+1
4+2+1
3+3+1
3+2+2
Numero de somas: 4

Entrada:
N - número inteiro
Saída:
Resultado - número total de somas

Execução de exemplo (sem parciais):

C:\>triplasoma
7
4

CANDIDATE ANSWER

Language used: C

1 #include <stdio.h>
2
3 int main() {
4
5 }

TESTCASE DIFFICULTY TYPE STATUS SCORE TIME TAKEN MEMORY USED

Testcase 0 Medium Sample case  Wrong Answer 0 0.0253 sec 7.31 KB

Testcase 1 Medium Sample case  Wrong Answer 0 0.0242 sec 7.32 KB

Testcase 2 Medium Hidden case  Wrong Answer 0 0.0272 sec 7.32 KB

Testcase 3 Medium Hidden case  Wrong Answer 0 0.0227 sec 7.26 KB

Testcase 4 Medium Hidden case  Wrong Answer 0 0.0282 sec 7.24 KB

Testcase 5 Medium Hidden case  Wrong Answer 0 0.0276 sec 7.43 KB

No Comments

/
QUESTION 14 pi.c 

Coding

Wrong Answer
QUESTION DESCRIPTION

|__| Calcular o valor de PI com base na fórmula de Ramanujan: 1/PI = 2 * sqrt(2) / 9801 * SOMA(k=0...K;
Score 0
(4k)! * (1103 + 26390*k) / ( (k!)^4 * 396^(4*k) ) )

Notas:
Utilize precisão dupla
Pode utilizar a função sqrt para calcular a raiz quadrada, da biblioteca math.h

«36»Execução de exemplo:

C:\>pi
0
3.1415927300133055

Entrada:
K - inteiro com o número de passos, de 0 a K inclusive
Saída:
Resultado - valor de PI com precisão científica de 17 dígitos

CANDIDATE ANSWER

Language used: C

1 #include <math.h>
2 #include <stdio.h>
3
4 int main() {
5
6 }

TESTCASE DIFFICULTY TYPE STATUS SCORE TIME TAKEN MEMORY USED

Testcase 0 Medium Sample case  Wrong Answer 0 0.0256 sec 7.32 KB

Testcase 1 Medium Sample case  Wrong Answer 0 0.0264 sec 7.32 KB

Testcase 2 Medium Hidden case  Wrong Answer 0 0.0263 sec 7.3 KB

Testcase 3 Medium Hidden case  Wrong Answer 0 0.0255 sec 7.38 KB

Testcase 4 Medium Hidden case  Wrong Answer 0 0.023 sec 7.32 KB

Testcase 5 Medium Hidden case  Wrong Answer 0 0.0261 sec 7.39 KB

No Comments

QUESTION 15 formularesolvente.c 

Coding

Wrong Answer
QUESTION DESCRIPTION

|__| Faça um programa que peça os coeficientes de um polinómio do segundo grau, e retorna as raízes
Score 0
reais, caso existam. Adicionalmente o programa deve retornar todos os conjuntos de coeficientes inteiros,
que têm apenas raízes inteiras reais. Os coeficientes estão entre -K e K não tendo nenhum coeficiente nulo
(K é introduzido pelo utilizador e é um inteiro pequeno). Relembra-se a fórmula resolvente: ax2+bx+c=0 é
equivalente a x= (-b +-sqrt(b2 - 4ac)) / (2a)

/
Notas:
Para calcular a raiz quadrada, utilize a função sqrt, disponível na biblioteca math.h
Faça três ciclos um dentro do outro, um ciclo por cada um dos coeficientes, e varie a variável
iteradora entre -K e K.

Execução de exemplo (com parciais):

C:\>formularesolvente
Equacao do segundo grau a*x^2+b*x+c=0.
Indique a b c: 2 4 2
Delta: 0.000000
A equacao tem uma raiz unica, x=-1.000000

Calculo de coeficientes entre -K e K inteiros nao nulos, com raízes


inteiras.
Introduza K:2

Coeficientes de -2 a 2 inteiros nao nulos, com raízes inteiras:


[-1 -2 -1] [-1 -1 2] [-1 1 2] [-1 2 -1] [1 -2 1] [1 -1 -2] [1 1 -2] [1 2
1]
Total: 8

Entrada:
K - valor inteiro
Saída:
Coeficientes inteiros não nulos, com apenas raízes inteiras reais, um por cada linha, sempre na ordem
do menor para o maior, e da esquerda para a direita, conforme a execução de exemplo

Execução de exemplo (sem parciais):

C:\>formularesolvente
2
-1 -2 -1
-1 -1 2
-1 1 2
-1 2 -1
1 -2 1
1 -1 -2
1 1 -2
1 2 1

CANDIDATE ANSWER

Language used: C

1 #include <math.h>
2 #include <stdio.h>
3
4 int main() {
5
6 }

TESTCASE DIFFICULTY TYPE STATUS SCORE TIME TAKEN MEMORY USED

Testcase 0 Medium Sample case  Wrong Answer 0 0.0229 sec 7.24 KB

Testcase 1 Medium Hidden case  Wrong Answer 0 0.0252 sec 7.43 KB

Testcase 2 Medium Hidden case  Wrong Answer 0 0.0359 sec 7.19 KB

Testcase 3 Medium Hidden case  Wrong Answer 0 0.0327 sec 7.32 KB

Testcase 4 Medium Hidden case  Wrong Answer 0 0.025 sec 7.28 KB

/
No Comments

PDF generated at: 16 Nov 2020 23:49:38 UTC

Você também pode gostar