TOPIC

PROBLEM 1193 - URI Fórum 1.0

URI Online Judge asked 7 years ago

URI Online Judge Fórum 1.0

MOD

This topic was solved and cannot recieve new replies.

  • Abner Samuel P. Palmeira replied 5 years ago

    lvirgili , é um erro muito comum achar que o limite de um inteiro de 32 bits é igual 4294967295, a questão é que os valores são divididos entre positivos e negativos, então você tem −2147483648 até 2147483647 o que totaliza 2^32 valores . Logo os valores que você testou estão acima do esperado no exercício e por isso o toolkit não gera a resposta certa.

  • Hamilton José Brumatto replied 3 years ago

    Olá! Estou tentando este problema mas só obtenho WA 20%. Testei com 0, 1, alguns valores, inclusive os do texto, 7fffffff, ffffffff (também as versões binárias e decimal) e não encontro realmente onde está os 20%. Lembrando que na descrição do problema diz X > 0 então devemos considerar que os inteiros são sem sinal. Há alguma forma de ver onde o teste falha?

  • Thadeu Melo replied 4 years ago

    bom, aqui estão os meus casos de teste. mas continua dando WA

    #include <iostream>
    #include <math.h>       /* pow */
    #include <string>
    #include <bitset>
    
    using namespace std;
    
    void printHex(int S){
    #####################################
    }
    
    void printBin(int S){
    #####################################
    }
    
    void printDec(int S){
       ##############################################
    }
    
    int main() {
        int N;
        int val;
        string s;
        string base;
        cin >> N;
        for(int i = 0; i < N;i++){
            cin >> s;
            cin >> base;
            cout << "Case " << i + 1 <<":" << endl;
            if(base == "dec"){
                val =####################
                printHex(val);
                printBin(val);
            }
            else if(base == "hex"){
                val = ########################
                printDec(val);
                printBin(val);
    
            }
            else{
                val = ####################
                printDec(val);
                printHex(val);
            }
            cout << endl;
        }
        return 0;
    }

    Alguma sugestão???

  • Gelasio Ebel Junior replied 4 years ago

    Não consigo descobrir o erro Já testei varios casos com o toolkit Inclusive testei diferente locais para colocar espaço Alguém pode dar uma luz em Python3?

    def bindec(n):
        res=0
        for i in range(len(n)-1,-1,-1):
            #print(i)
            if n[i]!='0':
                res+=2**i
        return res
    
    def decbin(n):
        n=int(n)
        x=''
        while n>0:
            x=x+str((n%2))
            n=n//2
        y=''
        for i in range(len(x)-1,-1,-1):
            #print(x[i])
            y+=x[i]
        return y
    
    def dechex(n):
        n=int(n)
        y=''
        while n>0:
    
            x=(n%16)
            n=n//16
            if x<10 and x>=0:
                y=y+str(x)
            elif x==10:
                y=y+'A'
            elif x==11:
                y=y+'B'
            elif x==12:
                y=y+'C'
            elif x==13:
                y=y+'D'
            elif x==14:
                y=y+'E'
            elif x==15:
                y=y+'F'
            #print('n//16',n//16)
        #print(y)
        z=''
        for i in range(len(y)-1,-1,-1):
            #print(y[i])
            z=z+y[i]
        return z.lower()
    
    def hexdec(n):
        res=0
        cont=0
        for i in range(len(n)-1,-1,-1):
            if n[i]=='0' or n[i]=='1' or n[i]=='2' or n[i]=='3' or n[i]=='4' or n[i]=='5'  or n[i]=='6' or n[i]=='7' or n[i]=='8' or n[i]=='9':
                aux=int(n[i])
            elif n[i].upper()=='F':
                aux=15
            elif n[i].upper()=='E':
                aux=14
            elif n[i].upper()=='D':
                aux=13
            elif n[i].upper()=='C':
                aux=12
            elif n[i].upper()=='B':
                aux=11
            elif n[i].upper()=='A':
                aux=10
    
            x=int(16**cont)
            #print('aux*x',aux*x)
            res=res+(aux*x)
            #print(aux)
            cont+=1
        return res
    
    casos=int(input())
    for j in range(1,casos+1):
        a, b =input().split()
        print('Case '+str(j)+':')
    
        if b=='bin':
            x=bindec(a)
            print(str(x)+' dec')
            print(str(dechex (x))+' hex')
        elif b=='dec':
            print(str(dechex (a))+' hex')
            print(str(decbin (a))+' bin')
        else:
            x=hexdec (a)
            print(str(x)+' dec')
            print(str(decbin(x))+' bin')
        print('')
  • Tailo Mateus replied 4 years ago

    Olá, alguém sabe algum teste que falhe? Obrigado!

    #include <iostream>
    #include <stdio.h>
    #include <string>
    #include <stdlib.h>
    
    using namespace std;
    
    void DecimalBinario (unsigned  long long decimal){
    
        if (decimal / 2 >= 1){
            DecimalBinario(decimal / 2);
            printf ("%ld", decimal%2);
        }
        if (decimal == 1){
            printf ("1");
        }
    }
    
    int main(){
        unsigned long long contador, decimal, binario, hexa;
        string opera, operacao;
        char buffer [99];
    
        cin>>contador;
    
        for(int i=0;i<contador;i++){
            cin >> opera >> operacao;
    
            printf("Case %d:\n", i+1);
            if(operacao == "dec"){
                decimal = atoi(opera.c_str());
                cout << hex << decimal << " hex" << endl;
                //itoa (decimal,buffer,16);
                //printf ("%s hex\n",buffer);
    
                //itoa (decimal,buffer,2);
                //printf ("%s bin\n",buffer);
    
                DecimalBinario(decimal);
                cout << " bin\n";
            }
            else if(operacao == "bin"){
                binario = atoi(opera.c_str());
    
                int total  = 0;
                int potenc = 1;
    
                while(binario > 0) {
                    total += binario % 10 * potenc;
                    binario    = binario / 10;
                    potenc = potenc * 2;
                }
    
                //printf("%d dec\n", total); 
                cout<<total<<" dec\n";
    
                //itoa (total, buffer,16);
                //printf ("%s hex\n",buffer);
                cout << hex << total << " hex" << endl;
            }
            else{
                hexa = strtoll(opera.c_str(), 0, 16);
                cout << dec << hexa << " dec" << endl;
    
                //itoa (hexa,buffer,2);
                //printf ("%s bin\n",buffer);
                DecimalBinario(hexa);
                cout << " bin\n";
            }
    
            if(i+1 != contador){
                printf("\n");
            }
        }
    
        return 0;
    }
  • Bruninho replied 4 years ago

    Pessoal eu gravei uma aula mostrando passo a passo como resolver esse exercício em Java segue o link pra quem quiser conferir: https://www.youtube.com/watch?v=lREDBOc0jg0

  • Julio Alexander Sieg replied 4 years ago

    Estou com erro WA 20%, alguém pode me dar alguns testes pra eu descobrir onde está o erro?

    #include <iostream>
    #include <stdlib.h>
    #include <bitset>
    #include <sstream>
    #include <string>
    
    using namespace std;
    
    ///Binário para Decimal
    int binToDec(string paraconve){
    
    int dec = 0;
    
    for (int i=0; i<paraconve.length(); i++){
        if (paraconve[i] == '1'){
           dec = dec * 2 + 1;
        }else{
           dec *=2;
        }
    }
    
    return dec;
    };
    
    ///Binário para HexaDecimal
    string binToHex(string paraconve){
    
    string binary_str(paraconve);
    bitset<8> set(binary_str);
    
    std::stringstream ss;
    string number;
    ss << hex << set.to_ulong() << endl;
    
    ss >> number;
    return number;
    
    };
    
    ///Decimal para Binário
    string decToBin(int dec){
    
    if (dec==0) return "0";
    if (dec==1) return "1";
    
    if (dec%2 == 0)
        return decToBin(dec/2) + "0";
    else
        return decToBin(dec/2) + "1";
    }
    
    ///Decimal para Hexadecimal
    string decToHex(int dec){
    
    stringstream ss;
    ss << hex << dec;
    string res ( ss.str() );
    
    return res;
    
    }
    
    ///Hexadecimal para Decimal
    int hexToDec(string hexa){
    
    int decimal_value;
    
    stringstream ss;
    ss << hexa;
    ss >> hex >> decimal_value;
    
    return decimal_value;
    
    }
    
    ///Hexadecimal para Binário
    string hexToBin(string hexa){
    
    string sReturn = "";
                for (int i = 0; i < hexa.length (); ++i)
                {
                    switch (hexa [i])
                    {
                        case '0': sReturn.append ("0000"); break;
                        case '1': sReturn.append ("0001"); break;
                        case '2': sReturn.append ("0010"); break;
                        case '3': sReturn.append ("0011"); break;
                        case '4': sReturn.append ("0100"); break;
                        case '5': sReturn.append ("0101"); break;
                        case '6': sReturn.append ("0110"); break;
                        case '7': sReturn.append ("0111"); break;
                        case '8': sReturn.append ("1000"); break;
                        case '9': sReturn.append ("1001"); break;
                        case 'a': sReturn.append ("1010"); break;
                        case 'b': sReturn.append ("1011"); break;
                        case 'c': sReturn.append ("1100"); break;
                        case 'd': sReturn.append ("1101"); break;
                        case 'e': sReturn.append ("1110"); break;
                        case 'f': sReturn.append ("1111"); break;
                    }
                }
                return sReturn;
    
    }
    
    //
    
    int main (){
    
    int n;
    cin >> n;
    
    for (int i=0; i<n; i++){
    
        string paraconve;
        string tipo;
    
        cin >> paraconve >> tipo;
    
        if(tipo=="bin"){
    
            cout << "Case " << i+1 << ":" << endl;
            int dec = binToDec(paraconve);
            cout << dec << " dec" << endl;
    
            string hex = binToHex(paraconve);
            cout << hex << " hex" << endl;
    
            cout << endl;
        }else{
            if(tipo=="dec"){
                cout << "Case " << i+1 << ":" << endl;
    
                int dec = atoi(paraconve.c_str());
    
                string hex = decToHex(dec);
                cout << hex << " hex" << endl;
    
                string bin = decToBin(dec);
                cout << bin << " bin" << endl;
                cout << endl;
    
            }else{
                if(tipo=="hex"){
                   cout << "Case " << i+1 << ":" << endl;
    
                   int dec;
                   string bin;
                   dec = hexToDec(paraconve);
                   cout << dec << " dec" << endl;
    
                   bin = hexToBin(paraconve);
                   cout << bin << " bin" << endl;
    
                   cout << endl;
                }else{
                    cout << "Tipo Inválido" << endl;
                }
            }
        }
    
    }
    }
  • Carlos Cruz replied 4 years ago

    Meu código só retorna WA 10%

    Eu já fiz vários testes no toolkit que batem com o meu código.

    Alguém pode postar VÁRIOS casos de testes para eu tentar descobrir o que está errado?

    vlw

  • Edmundo Rodrigues replied 5 years ago

    20% de WA, testei com todos os casos que mandaram acima... alguma sugestão?

    #include <iostream>
    #include <string>
    #include <bitset>
    
    using namespace std;
    
    int main() {
    
        const int BITSET_SIZE = 32;
    
        int n;
        cin >> n;
    
        for (int i = 1; i <= n; i++) {
            cout << "Case " << i << ":" << endl;
    
            string snum, base;
            cin >> snum >> base;
    
            unsigned long int num;
            if (base == "hex")
                num = stoul(snum, 0, 16);
            else if (base == "bin")
                num = stoul(snum, 0, 2);
            else
                num = stoul(snum);
    
            // dec, hex, bin
            if (base == "bin") {
                cout << dec << bitset<BITSET_SIZE>(snum).to_ulong() << " dec" << endl;
                cout << hex << bitset<BITSET_SIZE>(snum).to_ulong() << " hex" << endl;
            }
            else if (base == "dec") {
                cout << hex << num << " hex" << endl;
    
                string bin_number = bitset<BITSET_SIZE>(num).to_string();
                cout << bin_number.substr(bin_number.find("1")) << " bin" << endl;
            }
            else {
                cout << dec << num << " dec" << endl;
    
                string bin_number = bitset<BITSET_SIZE>(num).to_string();
                cout << bin_number.substr(bin_number.find("1")) << " bin" << endl;
            }
    
            cout << endl;
        }
    
        return 0;
    }
  • Ricardo Manhães Savii replied 5 years ago

    Olá, boa noite.

    Meu código ficou grande e não fui escrevendo os passos... só distinguindo de quando estava começando as transformações, desculpem... e sou principiante também. Fico impressionado com a galera que consegue resolver o problema em 0.026 segundos enquanto que o meu código leva 0.100 pra mais. :( Mas chego lá! :)

    Bom, meu código está dando WA 10%... eu vi em alguns comentários aqui,as ma acredito que são antigos, que era possível ver o código fonte ou respostas, ou algo assim... bom, seria muito bom se em um caso de WA (principalmente 10%, ou seja, provável que só uma entrada não funcionou) eu pudesse ver qual foi a entrada. Pois estou tentando diversas entradas, muitas mesmo, e meu código esta igual ao toolbox. :(

    Segue meu código caso alguém tenha paciência de lê-lo: (eu tento ser organizado nas indentações ao menos...)

    #include <stdio.h>
    #include <string.h>
    #include <math.h>
    
    void main(){
        int N;
        scanf("%d", &N);
    
        char Y[5], X[100];
        long long int A[100];
        long int i, j, k, dig, opa, putz, urol;
        long long int aux;
        for (i = 0; i < N; i++){
            scanf("%s", X);
            scanf("%s", Y);
            printf("Case %ld:\n", i + 1);
            if (X[0] == '0'){
                if (Y[0] == 'd'){
                    printf("0 hex\n0 bin\n\n");
                } else {
                    if (Y[0] == 'h'){
                        printf("0 dec\n0 bin\n\n");
                    } else {
                        printf("0 dec\n0 hex\n\n");
                    }
                }
            } else {
            if (Y[0] == 'd'){
                    j = 0; /// dec to hex
                    sscanf(X, "%lld", &aux);
                    while (aux >= 1){
                        A[j] = aux % 16;
                        aux = floor(aux / 16);
                        j++;
                    }
                    j--;
                    while(j >= 0){
                        if (A[j] < 10){
                            printf("%lld", A[j]);
                        } else {
                            if (A[j] == 10){
                                printf("a");
                            } else {
                                if (A[j] == 11){
                                    printf("b");
                                } else {
                                    if (A[j] == 12){
                                        printf("c");
                                    } else {
                                        if (A[j] == 13){
                                            printf("d");
                                        } else {
                                            if (A[j] == 14){
                                                printf("e");
                                            } else {
                                                if (A[j] == 15){
                                                    printf("f");
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                        j--;
                    }
                    printf(" hex\n");
    
                    j = 0; /// dec to bin
                    sscanf(X, "%lld", &aux);
                    //aux = atoi(X);
                    while (aux >= 1){
                        A[j] = aux % 2;
                        aux = floor(aux / 2);
                        j++;
                    }
                    j--;
                    aux = 0;
                    while(j >= 0){
                        if (A[j] == 1)
                            aux = 1;
                        if (aux == 1)
                            printf("%lld", A[j]);
                        j--;
                    }
                    printf(" bin\n");
            } else {
                if (Y[0] == 'h'){
                    dig = 0; /// hex to dec
                    while(X[dig] != '\0'){
                        dig ++;
                    }
                    k = 0;
                    aux = 0;
    
                    for (j = dig - 1; j >= 0; j--){
                        if (X[k] == 'f'){
                            aux += 15 * pow(16, j);
                        } else {
                            if (X[k] == 'e'){
                                aux += 14 * pow(16, j);
                            } else {
                                if (X[k] == 'd'){
                                    aux += 13 * pow(16, j);
                                } else {
                                    if (X[k] == 'c'){
                                        aux += 12 * pow(16, j);
                                    } else {
                                        if (X[k] == 'b'){
                                            aux += 11 * pow(16, j);
                                        } else {
                                            if (X[k] == 'a'){
                                                aux += 10 * pow(16, j);
                                            } else {
                                                opa = atoi(&X[k]);
                                                if (opa > 9){
                                                    while (opa > 9){
                                                        opa = floor(opa / 10);
                                                    }
                                                }
                                                aux += opa * pow(16, j);
                                            }
                                        }
                                    }
                                }
                            }
                        }
                        k++;
                    }
                    printf("%lld dec\n", aux);
                    putz = dig;
                    dig = 0;
    
                    opa = 0; /// hex to bin
                    for (j = 0; j < putz; j++){
                        k = (opa * 4) + 3;
                        if (X[j] == 'f'){
                            aux = 15;
                            opa += 1;
                        } else {
                            if (X[j] == 'e'){
                                aux = 14;
                                opa += 1;
                            } else {
                                if (X[j] == 'd'){
                                    aux = 13;
                                    opa += 1;
                                } else {
                                    if (X[j] == 'c'){
                                        aux = 12;
                                        opa += 1;
                                    } else {
                                        if (X[j] == 'b'){
                                            aux = 11;
                                            opa += 1;
                                        } else {
                                            if (X[j] == 'a'){
                                                aux = 10;
                                                opa += 1;
                                            } else {
                                                urol = atoi(&X[j]);
                                                if (urol > 9){
                                                    while (urol > 9){
                                                        urol = floor(urol / 10);
                                                    }
                                                }
                                                aux = urol;
                                                opa += 1;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                        urol = k - 3;
                        while (k >= urol){
                            dig ++;
                            if (aux >= 1)
                                A[k] = aux % 2;
                            else A[k] = 0;
                            aux = floor(aux / 2);
                            k--;
                        }
                    }
                    opa = 0;
                    j = 0;
                    while (j < dig){
                        if (A[j] == 1)
                            opa = 1;
                        if (opa == 1)
                            printf("%lld", A[j]);
                        j++;
                    }
                    printf(" bin\n");
                } else {
                    if (Y[0] == 'b'){
                        j = 0; /// bin to dec
                        while (X[j] != '\0'){
                            j++;
                        }
                        dig = j;
                        j--;
                        k = 0;
                        aux = 0;
                        while (j >= 0){
                            if (X[k] == '1'){
                                aux += pow(2, j);
                            }
                            j--;
                            k++;
                        }
                        printf("%lld dec\n", aux);
    
                        k = 0;/// bin to hex
                        aux = dig % 4;
                        if (aux != 0)
                            j = 4 - aux;
                        else j = 0;
    
                        while (j > 0){
                            A[k] = 0;
                            k++;
                            j--;
                        }
                        j = 0;
                        aux = k + dig;
    
                        while (k < aux){
                            if (X[j] == 48){
                                A[k] = 0;
                            } else {
                                A[k] = 1;
                            }
                            k++;
                            j++;
                        }
                        j = 0;
                        k = 3;
                        dig = aux;
                        aux = 0;
                        while (j < dig) {
                            if (A[j] == 1){
                                aux += pow(2, k);
                            }
                            j++;
                            k--;
                            if (k == -1){
                                k = 3;
                                if (aux < 10){
                                    printf("%lld", aux);
                                } else {
                                    if (aux == 10){
                                        printf("a");
                                    } else {
                                        if (aux == 11){
                                            printf("b");
                                        } else {
                                            if (aux == 12){
                                                printf("c");
                                            } else {
                                                if (aux == 13){
                                                    printf("d");
                                                } else {
                                                    if (aux == 14){
                                                        printf("e");
                                                    } else {
                                                        if (aux == 15){
                                                            printf("f");
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                                aux = 0;
                            }
                        }
                        printf(" hex\n");
                    }
                }
            }
            printf("\n");
        }
    }}

    agradeço qualquer ajuda que puderem me dar.

  • lucas virgili replied 5 years ago

    eu sei :) mas como o enunciado diz que os inteiros são maiores que 0 eu assumi que eram sem sinal.

  • lucas virgili replied 5 years ago

    A saida to toolkit ainda esta estranha :(

    Para a entrada:

    3
    ffffffff hex
    111111111111111111111111111111111111 bin
    4294967295 dec

    O toolkit responde:

    Case 1:
    -1 dec
     bin
    
    Case 2:
    -1 dec
    ffffffff hex
    
    Case 3:
    ffffffff hex
     bin

    Alem disso, pode ser que o problema esteja com a verificacao errada? Nao estou conseguindo encontrar meu erro. Alguma entrada interessante tambem ajuda :)

  • Guttardo replied 5 years ago

    Estou tomando W.A (20%). Já descompliquei e compliquei de todas as formas que consegui pensar, alguém sabe o motivo?

    #include <iostream>
    #include <cstring>
    #include <cstdio>
    #include <cstdlib>
    #include <cmath>
    using namespace std;
    
    unsigned long int Binario_para_decimal(char bin[])
    {
        if (strlen(bin)<=19){
            unsigned long long int num=atoll(bin);
            unsigned long int dec=0;
            long long int d=1;
            do
            {
                dec = dec+(num%10)*d;
                d = d*2;
                num = num/10;
            }
            while(num!=0);
    
            return dec;
        }
        else {
            char aux[20];
            int i;
            for (i=0;i<19;i++){
                aux[i]=bin[i];
            }
            aux[i]='\0';
            unsigned long long int lol=atoll(aux);
            unsigned long int deci=0;
            long long int d1=1;
            do
            {
                deci = deci+(lol%10)*d1;
                d1 = d1*2;
                lol = lol/10;
            }
            while(lol!=0);
            for (i=0;bin[i+19]!='\0';i++)
                aux[i]=bin[i+19];
            aux[i]='\0';
            aux[0]='1';
            cout << aux << endl;
            lol=atoll(aux);
    
            do
            {
                deci = deci+(lol%10)*d1;
                d1 = d1*2;
                lol = lol/10;
            }
            while(lol!=0);
    
            return deci;
    
        }
    
    }
    
    void converte_DecimalBinario (unsigned long int decimal){
    
        if (decimal / 2 >= 1){
            converte_DecimalBinario(decimal / 2);
            printf ("%ld", decimal%2);
        }
        if (decimal == 1){
            printf ("1");
        }
    }
    
    unsigned long int Hex_decimal (char hex[]){
    
        long int i,num,len,counter=0;
        unsigned long int sum=0;  
    
        len=strlen(hex);
        for(i=len-1;i>=0;i--)
        {
           if(hex[i]>='0'&&hex[i]<='9')
              num=hex[i]-'0';     
           else
           {
              if(hex[i]>='a'&&hex[i]<='f')
              num=hex[i]-87;      
           }
           sum=sum+pow(16,counter)*num;  
           counter++;
        } 
    
        return sum;
    }
    
    int main (){
    
        int p, k=1;
        char num[50], tipo[5], c;
        cin >> p;
        int j=0;
        while(j<p){
    
            cin >> num;
    
            cin >> tipo;
    
            cout << "Case " << k << ":\n";
    
            if (strcmp(tipo,"bin")==0){
                unsigned long int dec=Binario_para_decimal(num);
                cout << dec << " dec\n";
                printf("%lx hex\n",dec);
            }
            else if (strcmp(tipo,"dec")==0){
                unsigned long int dec=atol(num);
                printf("%lx hex\n",dec);
                converte_DecimalBinario(dec);
                cout << " bin\n";
            }
            else {
                unsigned long int dec;
                cout << Hex_decimal(num) << " dec\n";
                dec=Hex_decimal(num);
                converte_DecimalBinario(dec);
                cout << " bin\n";
            }
            k++;
            cout << endl;
            j++;
    
        }
    
        return 0;
    }
  • Alex Mesquita replied 6 years ago

    Olá,

    Estou recebendo WA em 20% das entradas, mas todas que eu testei no toolkit estão passando. Alguém pode me dar uma ajuda?

    #include <iostream>
    
    using namespace std;
    
    int decToBin(long long decimal){
        string temp = "";
    
        while (decimal > 0){
            temp = to_string(decimal%2) + temp;
            decimal = decimal >> 1;
        }
    
        cout << temp << " bin" << endl;
    
        return 0;
    }
    
    int decToHex(long long decimal){
        cout << hex << decimal << " hex" << endl;
    
        return 0;
    }
    
    int main (){
        int n = 0;
    
        cin >> n;
    
        for (int i = 0; i < n; i++)
        {
            string numero = "", base = "";
            long long num = 0;
    
            cin >> numero >> base;
    
            cout << "Case " << i+1 << ":" << endl;
            if("dec" == base){
                num = atoll(numero.c_str());
    
                decToHex(num);
                decToBin(num);
            }
            else if("hex" == base){
                num = strtoll(numero.c_str(), 0, 16);
                cout << dec << num << " dec" << endl;
                decToBin(num);
            }
            else{
                num = strtoll(numero.c_str(), 0, 2);
                cout << dec << num << " dec" << endl;
                decToHex(num);
            }
            cout << endl;
        }
    
        return 0;
    }

    Desde já agradeço!

  • Leandro Moretti replied 6 years ago

    Boa tarde,

    submeti o problema dessas duas maneiras abaixo, porem somente a segunda passou, alguem sabe me dizer porque?

    char tipo[3];
    if(strcmp(tipo,"dec")==0){
    ...
    else if(strcmp(tipo,"bin")==0){
    ...
    else
    ...

    Dessa maneira não passou, somente passou dessa abaixo:

    string tipo;
    if(tipo == "dec"){
    ...
    else if(tipo == "bin"){
    ...
    else
    ...

    Nos casos de testes passou, porem eu recebi WA.

  • Gabriel replied 6 years ago

    Alguém sabe o que tem errado Ta dando WA (20%) mas eu já fiz vários testes com o toolkit e da certo

    #include <iostream>
    #include <stdlib.h>
    #include <math.h>
    using namespace std;
    unsigned long long int TamanhoStr(char *str)
    {
      register unsigned long long int x=0;
      while(str[x] != 0)
        x++;
      return x;
    }
    void DecToBin(unsigned long long int n,char *out)
    {
      unsigned long long int div;
      int x,y;
      char bin[96];
      if(n == 0)
      {
        out[0]='0',out[1]=0;
        return;
      }
      for(x=0,div=2; n != 0 ;x++,div*=2)
        if(n % div == 0)
          bin[x] = '0';
        else
          n-=n%div,bin[x] = '1';
      bin[x--]=0;
      for(y=0; x >= 0 ;y++,x--)
        out[y]=bin[x];
      out[y]=0;
    }
    
    unsigned long long int BinToDec(char *ent)
    {
      register unsigned long long int tam,x,soma;
      tam = pow(2,TamanhoStr(ent)-1);
      for(x=0,soma=0; ent[x] != 0 ;x++,tam/=2)
        soma+=tam*(ent[x]-'0');
      return soma;
    }
    
    unsigned long long int HexToDec(char *ent)
    {
      register unsigned long long int tam,x,soma;
      tam = pow(16,TamanhoStr(ent)-1);
      for(x=0,soma=0; ent[x] != 0 ;x++,tam/=16)
      {
        if(ent[x] >= 'a')
          soma+=tam*(ent[x]-'a'+10);
        else
          if(ent[x] >= 'A')
            soma+=tam*(ent[x]-'A'+10);
          else
            soma+=tam*(ent[x]-'0');
      }
      return soma;
    }
    
    int main()
    {
      unsigned long long int caso=0,cont,deci;
      string tipo;
      char binhex[96],ent[32];
      cin >> cont;
      while(caso < cont)
      {
        cin >> ent >> tipo;
        caso++;
        cout << "Case " << caso << ":" << endl;
        if(tipo == "dec")
        {
          deci=atoll(ent);
          DecToBin(deci,binhex);
          cout << hex << deci << " hex" << endl
               << binhex << " bin" << endl;
        } else {
          if(tipo == "bin")
          {
            deci=BinToDec(ent);
            cout << dec << deci << " dec" << endl
                 << hex << deci << " hex" << endl;
          } else {
            deci=HexToDec(ent);
            DecToBin(deci,binhex);
            cout << dec << deci << " dec" << endl
                 << binhex << " bin" << endl;
          }
        }
        cout << endl;
      }
    }
  • Rerisson Daniel Matos replied 6 years ago

    Olá pessoal, tudo bem? Testei o seguinte código com todas as entradas aqui do fórum e a do exemplo na descrição. Infelizmente ainda estou levando WA 50%, e não consigo identificar o erro. Vocês poderiam me ajudar?

    Resolvido
  • Lucas Steffen replied 6 years ago

    #include <iostream>
    int main(void)
    {
        unsigned int N,n,X;
        char numero[20],formato[4];
        std::cin >> N;
        std::cin.get();
        for(n=0;n<N;++n){
            std::cin >> numero;
            std::cin.get();
            std::cin >> formato;
            std::cin.get();
        }
        return(0);
    }

    Mesmo submetendo apenas isso está dando runtime error...

  • Unknown replied 6 years ago

    Oi, tudo bem? Estou com uma dúvida em um problema poderia me dar uma dica de como eu devo fazer um programa que mostre a tabuada de potencia de 3, tipo como fazer para imprimir na tela: 3 ^ 1= 3 3 ^ 2=9

    e assim por diante pode me dar uma dica.

  • thagner moreira uramoto replied 6 years ago

    Estou recebendo WA, mas em todos os casos de testes que eu testo o resultado está correto, de acordo com o tool kit.

    Alguém pode me passar alguns casos para testar?

    Valeu!!

1 of 3