Escolar Documentos
Profissional Documentos
Cultura Documentos
pt
Email: 1702430@estudante.uab.pt
85.7% scored in 1920 UAb Prog.
Test Name: 1920 UAb Prog. Exercícios 1 Exercícios 1 in 18738 min 28
955/1115 sec on 6 Oct 2020 21:58:00
Taken On: 6 Oct 2020 21:58:00 WEST
WEST
Time Taken: 18738 min 28 sec/ 43200 min
Skills Score:
Tags Score:
Recruiter/Team Comments:
No Comments.
Plagiarism flagged
QUESTION 1 1) Exercícios
Multiple Choice
Correct Answer
QUESTION DESCRIPTION
CANDIDATE ANSWER
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!\n");
6 printf("sizeof(char): %d\n", sizeof(char));
7 printf("sizeof(short): %d\n", sizeof(short));
8 printf("sizeof(int): %d\n", sizeof(int));
9 printf("sizeof(long): %d\n", sizeof(long));
10 printf("sizeof(long long): %d\n", sizeof(long long));
11 printf("sizeof(float): %d\n", sizeof(float));
12 printf("sizeof(double): %d\n", sizeof(double));
13 printf("sizeof(long double): %d\n", sizeof(long double));
14 }
No Comments
QUESTION 3 soma.c
Coding
Needs Review
QUESTION DESCRIPTION
Notas:
Escreva sem acentos neste e nos restantes exercícios para que o código funcione sempre
/
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.
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
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 int N, resultado, i;
5
6 printf("Calculo da soma dos primeiros N numeros.\nIndique N:");
7 /* ler na entrada de dados, o valor N solicitado*/
8 scanf("%d",&N);
9
10 /* coloque em resultado a soma dos primeiros
11 N números inteiros*/
12 i=1;
13 resultado=0;
14 while(i<=N)
15 {
16 resultado = resultado +i;
/
6 esu tado esu tado ;
17
18 /* a meio, mostrar o resultado parcial */
19 printf("\n adicionar %d, parcial %d", i, resultado);
20 /* necessário colocar o incremento do depois do printf senão ele
21 conclui o
22 ciclo e mostra o i do fim do ciclo*/
23 i=i+1;
24 }
25 /* mostrar resultado final */
26 printf("\nTotal: %d\n", resultado);
}
No Comments
QUESTION 4 hms.c
Coding
Needs Review
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 printf("Minuto: ");
11 scanf("%d", &minuto);
12 printf("Segundos: ");
13 scanf("%d", &segundos);
14
15 /* Calculo para passagem das horas para segundos e minutos para segundos
16 */
17 segundos= ((hora*3600)+(minuto*60)+segundos);
18
19 printf("Numero de segundos desde o inicio do dia: %d", segundos);
20
}
No Comments
QUESTION 5 produto.c
Coding
Needs Review
QUESTION DESCRIPTION
|__| Multiplicar os primeiros N números inteiros positivos (factorial de N), sendo N definido pelo utilizador.
Score 40
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
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 N, i, factorial;
6
7 printf("Calculo do produto dos primeiros N numeros.\n");
8 printf("Indique N:");
9 scanf("%d", &N);
10
11 i=1;
12 factorial=1;
13 while(i<=N){
14
15 factorial=factorial*i;
16 printf(" Factorial(%d)=%d\n", i, factorial);
17 i++;
18 }
19 printf("Resultado: %d", factorial);
20 }
No Comments
QUESTION 6 arranjos.c
Coding
Needs Review
QUESTION DESCRIPTION
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).
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=5; arranjos=60
/
i=5; arranjos=60
Resultado: 60
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."
CANDIDATE ANSWER
Language used: C
1 #include <stdio.h>
2
3 int main() {
4 int N, R, i, arranjos;
5
6 printf("Calculo dos arranjos de N, R a R:\n");
7 printf("Indique N:");
8 scanf("%d", &N);
9 printf("Indique R:");
10 scanf("%d", &R);
11
12 if(N>R && R>0)
13 {
14 i=N-R+1;
15 arranjos=1;
16 while (i<=N) {
17 arranjos=arranjos*i;
18 printf(" i=%d; arranjos=%d\n", i, arranjos);
19 i++;
20 }
21 printf("Resultado: %d", arranjos);
22 }
23 else
24 {
/
25 printf("Erro: N tem de ser maior que R e este maior que 0.");
26 }
27
28 }
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
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
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, n, soma, parcial;
6
7 printf("Calculo da soma do quadrado dos digitos de um numero:\n");
8 printf("Numero: ");
9 scanf("%d", &numero);
10
11 soma=0;
12 n=0;
13
14 while (numero>0)
15 {
16 /* dividir o numero dado para saber o resto e depois fazer o quadrado
17 desse numero achado no resto */
18 n=(numero%10)*(numero%10);
19 /* para somar ao valor achado na instrução anterior */
20 soma=soma+n;
21 printf(" n=%d; soma=%d\n", numero, soma);
22
23 /* para poder saber o quociente da divisão. Na função n sabemos o
24 resto mas para continuar o programa precisamos de saber o quociente para
25 depois retomar o ciclo */
26 numero=numero/10;
27
}
printf("Resultado: %d", soma);
}
No Comments
QUESTION 8 fibonacci.c
Coding
Correct Answer
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.
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
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.
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 n, i, j, Fib1, Fib2, resultado;
6 printf("Calculo do valor da funcao Fibonacci:\n");
7 printf("Indique N:");
8 scanf("%d", &n);
9
10 /* n=1 0+1=1
11 n=2 1+1=2
12 n=3 1+2=3
13 n=4 2+3=5
14 n=5 3+5=8
15 n=6 5+8=13
16
17 para o n=3 é o resultado de n=2 + o de n=1
/ 18 ã d fi i 4 i di i ib1 é l d
18 então defini para começar em n=4 e indiquei que o Fib1 é o resultado
19 de n=2 e o Fib2 é o resultado de n=1
20
21 */
22
23 i=3;
24 Fib1=2;
25 Fib2=1;
26 resultado=0;
27
28 if (n==1 || n==2 || n==3)
29 {
30 printf(" Fib(%d)=%d\n", n, n);
31 printf("Resultado: %d", n);
32 }
33 else
34 {
35
36 while((i)<=n )
37 {
38
39 resultado=Fib1+Fib2;
40 printf(" Fib(%d)=%d\n", i, resultado);
41 /* para o n seguinte temos que reutilizar o resultado como sendo
42 o Fib1 e o Fib2 toma o valor de Fib1*/
43 Fib2=Fib1;
44 Fib1=resultado;
45 i++;
46 }
47 printf("Resultado: %d", resultado);
48 }
No Comments
QUESTION 9 combinacoes.c
Coding
Needs Review
QUESTION DESCRIPTION
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
/
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.
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
C:\>combinacoes
5
3
10
Entrada:
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, i, j, num, permutacao, div;
6
7 printf("Calculo das combinacoes de N, R a R:\n");
8 printf("Indique N:");
9 scanf("%d", &n);
10 printf("Indique R:");
11 scanf("%d", &r);
12
13 i=n-r+1;
14 j=1;
15 num=1;
16 permutacao=1;
17 while (i<=n)
18 {
19 /*separei em funções distintas tal como mostrado nos parciais*/
20 permutacao=num*i;
21 div=permutacao/j;
22 printf(" %d*%d=%d, %d/%d=%d\n", num, i, permutacao, permutacao , j,
23 div );
24 num=div;
25 i++;
26 j++;
27 }
28 printf("Resultado: %d", div);
}
/
TESTCASE DIFFICULTY TYPE STATUS SCORE TIME TAKEN MEMORY USED
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
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
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 #include <stdio.h>
3
4 int main()
5 {
6 int k, i;
7
8 /* Como ambas as variaveis não vão ser numeros inteiros, tem casas
9 decimais, é necessario a variavel ser double*/
10 double factorial, e;
11 /*printf("Digite K:\n");*/
12 scanf("%d", &k);
13
14 i=1;
15 e=(1.0);
16 factorial=1;
17
18 while(i<=k)
19 {
20 /* calculo do factorial*/
21 factorial=factorial*i;
22 /* Somatorio dos inversos do factorial*/
23 e=(e+(1.0/factorial));
24 i++;
25 }
26 printf("%.16g\n", e);
}
No Comments
QUESTION 11 trocos.c
Coding
Correct Answer
QUESTION DESCRIPTION
|__| Faça um programa que receba um montante em euros (com cêntimos), e que determina o menor
Score 100
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 double contagem ;
6 int dois_euros, um_euro;
7
8 contagem=0;
9 dois_euros=0;
10
11
12 printf("Introduza um montante em euros, podendo ter centimos: ");
13 scanf("%lf", &contagem);
14
15
16 /*while(contagem>0)
17 { */
18
19 if(contagem>=2)
20 {
21 dois_euros=contagem/2;
22 printf("2 euros: %d\n",dois_euros );
23 contagem= ((contagem)-(dois_euros*2));
24 /*printf("contagem= %f\n",contagem );*/
25 }
26
27 if(contagem>=1)
28 {
29 um_euro=contagem/1;
30 printf("1 euro: %d\n",um_euro);
31 contagem= ((contagem)-(um_euro));
32 /*printf("contagem= %f\n",contagem );*/
33 }
34
35 if(contagem>=0.50)
36 {
37 printf("50 centimos: 1\n");
38 contagem= contagem-0.50;
39 /*printf("contagem= %f\n",contagem );*/
40 }
41
42 if(contagem>=0.40)
43 {
44 printf("20 centimos: 2\n");
/
45 contagem= contagem-0.40;
46 /*printf("contagem= %f\n",contagem );*/
47 }
48
49 if(contagem>=0.20)
50 {
51 printf("20 centimos: 1\n");
52 contagem= contagem-0.20;
53 /*printf("contagem= %f\n",contagem );*/
54 }
55
56 if(contagem>=0.10)
57 {
58 printf("10 centimos: 1\n");
59 contagem= contagem-0.10;
60 /*printf("contagem= %f\n",contagem );*/
61 }
62
63 if(contagem>=0.0499)
64 {
65 printf("5 centimos: 1\n");
66 contagem= contagem-0.05;
67 /*printf("contagem= %f\n",contagem );*/
68 }
69
70 if(contagem>=0.039)
71 {
72 printf("2 centimos: 2\n");
73 contagem= contagem-0.04;
74 /*printf("contagem= %f\n",contagem );*/
75 }
76
77 if(contagem>=0.02)
78 {
79 printf("2 centimos: 1\n");
80 contagem= contagem-0.02;
81 /*printf("contagem= %f\n",contagem );*/
82 }
83
84 if(contagem>0.009)
85 {
86 printf("1 centimo: 1\n");
87 contagem= contagem-0.01;
88 /*printf("contagem= %f\n",contagem );*/
89 }
90
91 /*if(contagem>=0.001)
92 {
93 printf("1 centimo: 1\n");
94 contagem= contagem-0.01;
95 printf("contagem= %f\n",contagem );
96 }
97
98 }*/
99 }
No Comments
QUESTION 12 primo.c
Coding
Correct Answer
QUESTION DESCRIPTION
|__| Faça um programa que verifica se um determinado número N é um número primo. Um número é primo
Score 100
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.
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
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 n, i, primo;
8
9
10 i=2; /* começamos no 2 porque todos os numeros são divisiveis por dois*/
11 primo=0;
12
13 /* A definição mais comum é que "um número é primo se for divisível por 1
14 e por ele mesmo" ou então "é todo o número com dois e somente dois
15 divisores,
16 ele próprio e a unidade". Sendo assim, por exemplo,
17 o número 7 é primo por ser divisível apenas por 1 e por 7.
18 Já o número 6 não é primo porque é divisível por 1, 2, 3 e 6.
19
20 Para determinar se um certo número inteiro pequeno é primo, a divisão por
21 tentativa funciona bem.
22
23 --->>>Basta dividi-lo por todos os primos menores ou iguais à
24 sua raiz quadrada.... <<---*/
25
26 /* printf("Funcao que verifica se um numero N e' primo:\n");
27 printf("Indique N:");*/
28 scanf("%d", &n);
29
30 while((i*i)<=n) /* (i*i) -> raiz quadrada de um nunero */
31 {
32 if (n%i==0) /* faz a divisao do numero pelo funçao interadora,
33 caso o resto seja zero imprime o i que é o numero pelo qual é
34 divisivel,
35 logo não primo */
36 {
37 primo=i; /* Caso a condição seja verdadeira vai alterar o valor
38 da
39 variavel primo (0), para o valor de i*/
40 break; /*para sair do ciclo while caso o if seja lido*/
41 }
42 i++; /* como o if não foi verdadeiro incrementa e tenta de novo
43 se chegar ao fim é primo e sai do ciclo*/
44 }
45 if(primo>0) /* Se o if do ciclo foi verdadeiro a variavel primo vai ter o
46 valor
47 de i, logo será =! de 0 e aí imprime i que será o divisor de n*/
48 printf("%d",i);
else
printf("0"); /* o if anterior sendo falso quer dizer que o numero é primo
logo
sem nenhum numero divisor sem ser o 1 ou ele próprio*/
}
No Comments
QUESTION 13 triplasoma.c
Coding
Correct Answer
QUESTION DESCRIPTION
|__| Dado um inteiro positivo N, escrever todas as decomposições distintas possíveis como soma de três
Score 120
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.
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
C:\>triplasoma
7
4
CANDIDATE ANSWER
Language used: C
1 #include <stdio.h>
2
3 int main() {
4
5 /* O pensamento que utilizei, foi se estamos a lidar com uma tripla soma,
6 então no caso máximo a soma do primeiro digito será n-2, ou seja,
7 para 7 a única combinação máxima possível de soma de 3 algarismos para o
8 primeiro maior
9 algarismo será: n-2, que será 5, e n-2+n-(n-2) será 5+2.
/
10 Então, ainda temos o valor dois para distribuir para os outros dois digitos.
11 Vemos que será 5+1+1 Isto permite estabelecer uma relação entre o primeiro
12 digito
13 e o segundo digito na medida que se um diminui outro terá de aumentar, ou
14 seja,
15 se tinhamos 5+1+1, a seguir será: 4+2+1,, 3+3+1...
16 repara que o terceiro algarismo será sempre o resto da soma entre os dois
17 algarismos e o
18 teu n pedido.
19
20 Eu utilizei dois ciclos para conseguir fazer o exercício.*/
21
22 int num, i, soma1, soma2, soma3, contagem;
23
24
25 /*printf("Escreva um numero para decompor em somas de tres parcelas.\n");
26 printf("Numero:");*/
27 scanf("%d", &num);
28
29 contagem=0;
30 soma2=1;
31 soma3=1;
32 soma1=num-(soma2+soma3);/* o primeiro valor vai ser sempre o numero
33 inicial - o somatorio
34 dos seguintes*/
35
36
37 if (num>0)
38 {
39 while( soma2<=soma1 )/*temos que garantir que o primeiro valor a
40 somar é sempre maior que o seguinte*/
41 {
42 while((soma3 <= soma2) && (soma2 <= soma1))/* garantir que os
43 primeiros
44 valores sejam sempre maiores ou iguais que os seguintes*/
45 {
46 /*printf("primeiro: %d+%d+%d\n", soma1, soma2, soma3);*/
47
48 soma2++;
49 soma1--;
50 contagem++;
51 /*printf("segundo: %d+%d+%d\n", soma1, soma2, soma3);*/
52
53 }
54 soma2=soma3+1;/*Para garantir que a soma2 seja sempre maior que a
55 soma3*/
56 soma3++;
57 /*printf("terceiro: %d+%d+%d\n", soma1, soma2, soma3);*/
58 soma1=num-(soma2+soma3);/*a soma1 vai sempre ser o resto do
somatorio
das outras somas*/
/*printf("quarto: %d+%d+%d\n", soma1, soma2, soma3);*/
}
printf("%d", contagem);
}
}
/ T t 2 M di Hidd S 20 0 0268 7 52 KB
Testcase 2 Medium Hidden case Success 20 0.0268 sec 7.52 KB
No Comments
QUESTION 14 pi.c
Coding
Correct 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 120
(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 /*Calcular o valor de PI com base na fórmula de Ramanujan:
7 1/PI = 2 * sqrt(2) / 9801 * SOMA(k=0...K;
8 (4k)! * (1103 + 26390*k) / ( (k!)^4 * 396^(4*k) ) )
9 Notas:
10 Utilize precisão dupla
11 Pode utilizar a função sqrt para calcular a raiz quadrada, da biblioteca
12 math.h*/
13
14 int k, i, j;
15 double factorial4, factorial, resultado;
16
17 /*printf("Digite K:");*/
18 scanf("%d", &k);
19
20 i=0;
21 j=1;
22 resultado=0;
23
24
25 hile(i< k)
/
25 while(i<=k)
26 {
27 factorial4=1;
28 factorial=1;
29
30 /*###########################################
31 #### (4k)! ####
32 ###########################################*/
33 while (j <= 4*i)
34 {
35 factorial4 = factorial4 * j;
36 /*printf("factorial4:%.17f\n", factorial4);*/
37 j++;
38 }
39
40 /*###########################################
41 #### (k!) ####
42 ###########################################*/
43
44 while (j <= i)
45 {
46 factorial = factorial * j;
47 /*printf("factorial:%.17f\n", factorial);*/
48 j++;
49 }
50
51 /*##################################################
52 #### somatorio de todas as parcelas ####
53 ####((4k)!*(1103+26390*k))/((k!)^4*396^(4*k)))####
54 ##################################################*/
55
56 resultado= resultado + ((factorial4 * (1103+26390*i))/(pow(factorial,
57 4) * pow(396, 4*i)));
58 /*printf("soma:%.17f\n", resultado);*/
59 i++;
60 }
61 resultado=(2 * sqrt(2) / 9801)*resultado;
62 /*printf("resultado:%.17g\n", resultado);*/
63 resultado=1/resultado;
printf("%.16f\n", resultado);
}
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
/
|__| 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.
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
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
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 1 Medium Hidden case Wrong Answer 0 0.0289 sec 7.38 KB
No Comments