Departamento de Ciência da
Computação - IME - USP
#include <stdio.h> int main() { int a, b, c, d, nusp; printf("Digite o seu no. USP: "); scanf("%d", &nusp); /* nesta linha use o seu numero USP */ printf("nusp = %d\n", nusp); a = nusp % 10; b = (9 - a)*2 + 1; if (a < 5) c = b/2; else c = 9 - b/2; printf("a=%d b=%d c=%d\n", a, b, c); d = 14 - c; while (c > 0 || c + d > 1) { if (c == 1 && d == 2) { a = c; b = 0; } else { a = c; b = d; } d = a/2; c = b/2; printf("a=%d b=%d c=%d d=%d\n", a, b, c, d); } return 0; }
A resposta depende do resto da divisão do seu número USP por 10.
Teste com o seu no. USP e compare a resposta.
(0) nusp%10 == 0. Veja um exemplo abaixo.
Digite o seu no. USP: 1234560 nusp = 1234560 a=0 b=19 c=9 a=9 b=5 c=2 d=4 a=2 b=4 c=2 d=1 a=2 b=1 c=0 d=1
(1) nusp%10 == 1. Veja um exemplo abaixo.
Digite o seu no. USP: 1234561 nusp = 1234561 a=1 b=17 c=8 a=8 b=6 c=3 d=4 a=3 b=4 c=2 d=1 a=2 b=1 c=0 d=1
(2) nusp%10 == 2. Veja um exemplo abaixo.
Digite o seu no. USP: 1234562 nusp = 1234562 a=2 b=15 c=7 a=7 b=7 c=3 d=3 a=3 b=3 c=1 d=1 a=1 b=1 c=0 d=0
(3) nusp%10 == 3. Veja um exemplo abaixo.
Digite o seu no. USP: 1234563 nusp = 1234563 a=3 b=13 c=6 a=6 b=8 c=4 d=3 a=4 b=3 c=1 d=2 a=1 b=0 c=0 d=0
(4) nusp%10 == 4. Veja um exemplo abaixo.
Digite o seu no. USP: 1234564 nusp = 1234564 a=4 b=11 c=5 a=5 b=9 c=4 d=2 a=4 b=2 c=1 d=2 a=1 b=0 c=0 d=0
(5) nusp%10 == 5. Veja um exemplo abaixo.
Digite o seu no. USP: 1234565 nusp = 1234565 a=5 b=9 c=5 a=5 b=9 c=4 d=2 a=4 b=2 c=1 d=2 a=1 b=0 c=0 d=0
(6) nusp%10 == 6. Veja um exemplo abaixo.
Digite o seu no. USP: 1234566 nusp = 1234566 a=6 b=7 c=6 a=6 b=8 c=4 d=3 a=4 b=3 c=1 d=2 a=1 b=0 c=0 d=0
(7) nusp%10 == 7. Veja um exemplo abaixo.
Digite o seu no. USP: 1234567 nusp = 1234567 a=7 b=5 c=7 a=7 b=7 c=3 d=3 a=3 b=3 c=1 d=1 a=1 b=1 c=0 d=0
(8) nusp%10 == 8. Veja um exemplo abaixo.
Digite o seu no. USP: 12345678 nusp = 12345678 a=8 b=3 c=8 a=8 b=6 c=3 d=4 a=3 b=4 c=2 d=1 a=2 b=1 c=0 d=1
(9) nusp%10 == 9. Veja um exemplo abaixo.
Digite o seu no. USP: 1234569 nusp = 1234569 a=9 b=1 c=9 a=9 b=5 c=2 d=4 a=2 b=4 c=2 d=1 a=2 b=1 c=0 d=1
Escreva um programa em C que dados um número inteiro n, n > 0, e uma seqüência de n números inteiros, determina quantos segmentos de números iguais consecutivos compõem essa seqüência.
Exemplos:
7 2 2 3 -4 -4 -4 -4 3 3a resposta é 5;
1 2 1 2 1a resposta é 5;
/* * Solucao 1: Solucao curta e simples. */ #include <stdio.h> int main() { int n, /* numero de elementos da sequencia */ i, /* contador de numeros lidos da sequencia */ atual, /* numero da sequencia */ anterior, /* numero anterior da sequencia */ seg_iguais; /* quantidade de segmentos de numeros iguais a */ printf("Digite o numero de elementos da sequencia: "); scanf("%d",&n); printf("Digite uma sequencia com %d numeros inteiros: ", n); /* inicializacoes */ scanf("%d", &anterior); /* anterior comeca com o primeiro da sequencia */ seg_iguais = 1; /* inicialmente temos um segmento */ for (i = 1; i < n; i++) { /* examine próximo número da sequencia */ scanf("%d", &atual); /* comecou um novo segmento de numeros iguais? */ if (atual != anterior) { seg_iguais = seg_iguais + 1; anterior = atual; } } printf("Quantidade de segmentos de numeros iguais da sequencia = %d\n", seg_iguais); return 0; } /* * Solucao 2: identica a solucao 1 com 'while' no lugar de 'for' * */ #include <stdio.h> int main() { int n, /* numero de elementos da sequencia */ i, /* contador de numeros lidos da sequencia */ atual, /* numero da sequencia */ anterior, /* numero anterior da sequencia */ seg_iguais; /* quantidade de segmentos de numeros iguais a */ printf("Digite o numero de elementos da sequencia: "); scanf("%d",&n); printf("Digite uma sequencia com %d numeros inteiros: ", n); /* inicializacoes */ scanf("%d", &anterior); /* anterior comeca com o primeiro da sequencia */ seg_iguais = 1; /* inicialmente temos um segmento */ i = 1; while (i < n) { /* examine próximo número da sequencia */ scanf("%d", &atual); i = i + 1; /* comecou um novo segmento de numeros iguais? */ if (atual != anterior) { seg_iguais = seg_iguais + 1; anterior = atual; } } printf("Quantidade de segmentos de numeros iguais da sequencia = %d\n", seg_iguais); return 0; } /* * Solucao 3: colocaremos aqui qualquer solução que virmos e que * seja essencialmente diferente das anteriores. */
Dizemos que um número n pode ser quebrado nos números n1 e n2 se n pode ser escrito da forma n1n2, isto é, concatenado-se n1 com n2.
Escreva um programa em C que, dados três inteiros positivos n, n1 e n2, verifica se n pode ser quebrado em n1 e n2.
Suponha que o dígito 0 não aparece em nenhum dos números dados.
Exemplos:
/* * Solucao 1: Solucao curta e simples. * */ #include <stdio.h> int main() { int n; int n1; int n2; int pot10; printf("Digite n, n1 e n2: "); scanf("%d %d %d", &n, &n1, &n2); /* determine a menor potencia de 10 maior que n2 */ pot10 = 1; while (pot10 <= n2) { pot10 = pot10 * 10; } /* verifique se n eh quebrado */ if (n == n1*pot10 + n2) { printf("%d eh quebrado em %d e %d (%d==%d%d).\n", n, n1, n2, n, n1, n2); } else { printf("%d nao eh quebrado em %d e %d (%d!=%d%d).\n", n, n1, n2, n, n1, n2); } return 0; } /* * Solucao 2: solucao anterior sem as chaves superfluas. * */ #include <stdio.h> int main() { int n; int n1; int n2; int pot10; printf("Digite n, n1 e n2: "); scanf("%d %d %d", &n, &n1, &n2); /* determine a menor potencia de 10 maior que n2 */ pot10 = 1; while (pot10 <= n2) pot10 = pot10 * 10; /* verifique se n eh quebrado */ if (n == n1*pot10 + n2) printf("%d eh quebrado em %d e %d (%d==%d%d).\n", n, n1, n2, n, n1, n2); else printf("%d nao eh quebrado em %d e %d (%d!=%d%d).\n", n, n1, n2, n, n1, n2); return 0; } /* * Solucao 3: solucao anterior com 'for' no lugar de 'while' * */ #include <stdio.h> int main() { int n; int n1; int n2; int pot10; printf("Digite n, n1 e n2: "); scanf("%d %d %d", &n, &n1, &n2); /* determine a menor potencia de 10 maior que n2 */ for (pot10=1; pot10 <= n2; pot10*=10); /* verifique se n eh quebrado */ if (n == n1*pot10 + n2) printf("%d eh quebrado em %d e %d (%d==%d%d).\n", n, n1, n2, n, n1, n2); else printf("%d nao eh quebrado em %d e %d (%d!=%d%d).\n", n, n1, n2, n, n1, n2); return 0; } /* * Solucao 4: colocaremos aqui qualquer solução que virmos e que * seja essencialmente diferente da anterior. */