TOPIC

PROBLEM 1786 - URI Fórum 1.0

URI Online Judge asked 5 years ago

URI Online Judge Fórum 1.0

MOD

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.