TOPIC
PROBLEM 1786 - URI Fórum 1.0
This topic was solved and cannot recieve new replies.
-
Alexandre Henrique Afonso Campos replied 4 years ago
Os dígitos verificadores não podem se duplos. Você esqueceu do caso em que o resultado é 10.
Entrada
436932554
Saída
436.932.554-40
Sua saída
436.932.554-410
-
Tailo Mateus replied 5 years ago
Olá, alguém sabe algum teste que não passe? Obrigado.
#include <stdio.h> #include <math.h> #include <iostream> #include <string> #include <stdlib.h> using namespace std; int main() { string A, B, C, D, E; int a, b; int soma1, med1, soma2, med2, b1, b2; while(cin >> A) { soma1 = soma2 = 0; a = 1; b = 9; for(int i=0; i<A.size();i++){ B = A[i]; med1 = atoi (B.c_str()); soma1 = soma1 + (med1 * a); a++; C = A[i]; med2 = atoi (C.c_str()); soma2 = soma2 + (med2 * b); b--; } b1 = soma1 % 11; b2 = soma2 % 11; for(int i=0; i<A.size();i++){ cout<<A[i]; if(i == 2 or i == 5) printf("."); } printf("-%d%d\n", b1, b2); } return 0; }
-
Unknown replied 5 years ago
wa 10%?
import java.util.Scanner; public class Main { /** * @param args */ public static void main(String[] args) { Scanner en = new Scanner(System.in); String cpf; while(en.hasNextLine()){ cpf = en.nextLine(); int[] nums = new int[11]; for(int i=0; i<9; i++){ nums[i] = Integer.parseInt("" + cpf.charAt(i)); } int add = 0; for (int i=0; i < 9; i ++) { add += nums[i] * (10 - i); int rev = 11 - (add % 11); if (rev == 10 || rev == 11) rev = 0; nums[9]=rev; } // Valida 2o digito add = 0; for (int i = 0; i < 10; i ++) add += nums[i] * (11 - i); int rev = 11 - (add % 11); if (rev == 10 || rev == 11) rev = 0; nums[10]=rev; for(int i=0; i<11; i++){ if(i==3 || i==6) System.out.print("."); if(i==9) System.out.print("-"); System.out.print(""+ nums[i]); } System.out.println(); } } }
-
Ricardo Negreiros replied 5 years ago
Saídas Ok, qual pode ser o problema? Também estou recebendo 10% no CPF1...
Resolvido.
-
Professor replied 5 years ago
Olá, Estou tentando executar o seguinte código em Java para ler as entradas desse problema, porém sempre aparece "Possible runtime error". Por favor, poderiam ajudar? O que há de errado?
Segue código:
public static void main(String[] args) throws IOException { InputStreamReader ir = new InputStreamReader(System.in); BufferedReader in = new BufferedReader(ir); String entrada; int cpf[ ] = new int[9]; while((entrada = in.readLine()) != null){ for(int i = 0; i < 9; i++){ cpf[i] = Character.getNumericValue(entrada.charAt(i)); } //Restante do algoritmo... } }
-
Alexandre Henrique Afonso Campos replied 5 years ago
Durante a execução da solução correta, se você digitar
000000000 111111111
deve obter
000.000.000-00 111.111.111-11
Seu programa executa apenas a primeira linha e para. Para o runtime error, sugiro que troque o gets por um scanf ou cin.
-
Alison Massaki replied 5 years ago
Como assim executar só uma vez? E o erro é Runtime Error (nao sei oq é isso)
-
Alexandre Henrique Afonso Campos replied 5 years ago
E esse seu gets aí? Parece que o programa só vai executar uma única vez.
-
Alison Massaki replied 5 years ago
O que pode ser Runtime Error desse codigo
#include <stdio.h> int main() { char a[9]; int i, b, c, d; c=0; d=0; gets(a); for(i=0;i<9;i++){ b=a[i]-48; c=c+b*(i+1); d=d+b*(10-(i+1)); } c=c%11; d=d%11; if(c==10) c=0; if(d==10) d=0; for(i=0;i<3;i++){ printf("%d", a[i]-48); } printf("."); for(i=3;i<6;i++){ printf("%d", a[i]-48); } printf("."); for(i=6;i<9;i++){ printf("%d", a[i]-48); } printf("-"); printf("%d%d\n", c, d); return 0; }
testei todos os exemplos aqui e funcionaram perfeitamente.