TOPIC

PROBLEM 1241 - 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.

  • Stéfanni Brasil da Silva replied 4 years ago

    Pessoal, alguém consegue me explicar porquê está dando 10% wrong answer?

    #include <stdio.h>
    #include <string.h>
    int main() {
    char vetor1[1000];
    char vetor2[1000];
    int j = 0, n, tam1=0, tam2=0, teste =0, i =0, k=0, encaixa = 0;
    scanf("%d", &n);
        for(j=0; j< n; j++){
        scanf("%s", vetor1);
        scanf("%s", vetor2);
    
        if(vetor1 > 0 && vetor2 > 0){
                tam1 = strlen(vetor1);
                tam2 = strlen(vetor2);
                k = tam2-1;
            if((tam1 >= tam2) || (tam1 == tam2)){
                for(i = tam1; i > tam1 - tam2 ; i--){
                    if(vetor1[i-1] == vetor2[k--]){
                            encaixa++;
                     }
                     else{
                        printf("nao encaixa\n");
                        break;
                  }
                 if(encaixa == tam2)
                    printf("encaixa\n");
                }
            }
            else {
                printf("nao encaixa\n");
            } 
        }   
    
        }
        return 0;
    }
  • Edson replied 3 years ago

    Alguém consegue ver onde eu tô errando? Meu código tá batendo com cada caso que eu coloque, mas mesmo assim tô pegando wrong answer 100%

    #include<stdio.h>
    #include<string.h>
    
        main(){
            char a[1005], b[1005];
            int count, op, quant=0, sizea, sizeb;
    
            scanf("%d", &op);
            getchar();
    
            while(op>0){
                    op--;
    
                    quant=0;
    
                fgets(a,1005,stdin);
                fgets(b,1005, stdin);
                    sizea=strlen(a);
                    sizeb=strlen(b);
    
                for(count=sizeb; count>0; count--){
                    if(b[sizeb-count]==a[sizea-count])
                    quant++;
    
                }
    
                if(quant==sizeb)
                    printf("encaixa\n");
                else
                    printf("nao encaixa\n");
            }
    
        }
  • Allan Flores de Jesus replied 3 years ago

    Está dando WA 10%

    # include <stdio.h>
    # include <stdlib.h>
    # include <string.h>
    # include <math.h>
    
    int main()
    {
        int casos, cont,tama, tamb,conta, contb;
        char a[2001], b[2001];
    
        scanf("%d", &casos);
        for(cont = 1;cont<= casos;cont++)
        {
    
            scanf("%s %s", a, b);
            tama = strlen(a);
            tamb = strlen(b);
    
            if(tama >= tamb)
            {
                conta=tama;
                contb=tamb;
                while(a[conta-1] == b[contb-1])
                {
                    conta = conta-1;
                    contb = contb-1;
                }
    
                if(contb + 2 > tamb)
                    printf("nao encaixa\n");
                else
                    printf("encaixa\n");
    
            }
            else
                printf("nao encaixa\n");
        }
    
        return 0;
    }
  • Unknown replied 4 years ago

    Exactly! Then you found your logical error, because actually 2123 isn't fit in 123123. You can assure that, by using uri's toolkit of the problem.

  • Unknown replied 4 years ago

    Try this input: 1 123123 2123

  • Unknown replied 4 years ago

    You can try adding \n at the end of each print. May workout..

  • Unknown replied 4 years ago

    Galera, também estou obtendo W.A 10%, já tentei de tudo, estou cego com algum erro bobo...

    printf("foi");

    Agradecido se alguém puder me ajudar.

    Update: Estava apanhando porque não estava verificando o último número da string2, mas agora foi =)

  • Aniro Montenegro replied 4 years ago

    Não estou achando o erro.Esta dando runtime error.

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main {

     public static void main(String[] args) throws IOException {
    
         BufferedReader b = new BufferedReader(new InputStreamReader(System.in));
         int var;
         String stra,strb,x;
         x=b.readLine();
         var=Integer.parseInt(x);
         for(int i=0;i<var;i++)
         {
             stra=b.readLine();
             strb=b.readLine();
             if(strb.length()>stra.length())
                 System.out.println("nao encaixa");
             else
                 if(stra.endsWith(strb))
                     System.out.println("encaixa");
                 else
                     if(!(stra.endsWith(strb)))
                     {
                         System.out.println("nao encaixa");
                     }
    
         }
         b.close();
     }

    }

  • Unknown replied 4 years ago

    I was searching for this code. It was helpful for me.

  • Francisco replied 4 years ago

    Alguem pode me ajudar a identificar onde está o erro no meu codigo, está dando WA 10%

    include include

    int main(){

    int n, i, tam_a, tam_b, z, x;
    char a[1001], b[1001];
    
    scanf ("%d", &n);
    for (i = 0; i < n; i++){
        scanf ("%s %s", a, b);
        tam_a = strlen(a);
        tam_b = strlen(b);
        x = 0;
        char str[tam_b];
        for (z = tam_a - tam_b; z < tam_a; z++){
            str[x] = a[z];
            x++;    
        }
        if (strcmp(b,str) == 0){
            printf ("encaixa\n");
        }
        if (strcmp(b,str) == 1 || strcmp(b,str) == -1){
            printf ("nao encaixa\n");
        }
    }
    return 0;

    }

  • Inacio Medeiros replied 4 years ago

    O código abaixo produz as saídas-exemplo corretas, e inclusive passa no teste "1234123 123", porém está dando WA 10%. Alguém sabe dizer onde está o erro?

    #include <iostream>
    #include <string>
    
    using namespace std;
    
    int main() {
        string a, b;
        int x;
        bool toContinue;
    
        cin >> x;
        for (int i = 0; i < x; ++i) {
            cin >> a >> b;
    
            if (b.size() > a.size()) {
                cout << "não encaixa\n";
                continue;
            }
    
            toContinue = false;
    
            for (int j = b.size() - 1, k = a.size() - 1; j >= 0; --j, --k) {
                if (b[j] != a[k]) {
                    toContinue = true;
                    break;
                }
            }
    
            if (toContinue) {
                cout << "não encaixa";
            } else {
                cout << "encaixa";
            }
    
            cout << "\n";
    
        }
    
        return 0;
    }
  • Matheus Leão replied 5 years ago

    MariaClaraJ, a função gets lê até o fim da linha. No caso, você precisa usar scanf("%s") pra ler só uma string. Outra coisa, tire o fflush porque ele não funciona aqui.

  • Maria Clara Machry Jacintho replied 5 years ago

    #include<stdio.h>
    #include<strings.h>
    
    int main ()
    {
        char a[1001], b[1001];
        int i, teste, lenghtb,j,casasiguais, lena,k;
    
        scanf("%d", &teste);
        fflush(stdin);
        for(i=0;i<teste;i++)
        {
            gets(a);
            gets(b);
    
            if(strlen(b)>strlen(a))
            {
                printf("nao encaixa\n");
            }
            else
            {
    
                lenghtb = strlen(b);
                lena = strlen(a)-lenghtb;
                casasiguais=0;
    
                for(j=0;j<lenghtb;j++)
                {
                    if(a[lena+j]==b[j])
                    {
                        casasiguais++;
                    }
    
                }
                if(casasiguais==lenghtb)
                {
                    printf("encaixa\n");
                }
                else
                {
                    printf("nao encaixa\n");
                }
    
            }
        }
    }

    Alguém pode me ajudar a entender por que está dando Runtime Error?

  • Matheus Leão replied 6 years ago

    Thulio, não tenho certeza, mas acho que a função strlen demora tempo proporcional ao tamanho da string. Tente declarar variavel = strlen (a) e outravariavel = strlen (b) ao invés de chamar a função toda vez.

  • Thulio Amorim replied 6 years ago

    RESOLVIDO!

    Obrigado pela ajuda Matheus Leão, Thulio.

  • Matheus Leão replied 6 years ago

    Teste o caso 1 1234123 123

  • MatheusDM replied 6 years ago

    ta dando WA 10%, mas nao achei o erro, as saidas do exemplo estao corretas

    #include <iostream> 
    #include <iomanip> 
    #include<cstdlib> 
    #include<string> 
    using namespace std; 
    int main(){ 
        int x,y,z, l, n;
        string g, h;
        cin>>n;
        for(int i=0; i<n; i++)
        {
        cin>>g;
        cin>>h;
        y=g.length();
        z=h.length();
        l=y-z;
        x=g.find(h);
    
        if(x==l){cout<<"encaixa"<<endl;}
        else{cout<<"nao encaixa"<<endl;}
    }
    
        return 0;
        }
  • Cristhian Bonilha replied 6 years ago

    Lembre-se que a contagem de posições em vetor é sempre feita começando de 0. O valor retornado por strlen() é o limite, e não deve ser comparado, uma vez que contenha apenas um caractere especial '\0'.

    O certo seria que você comparasse de t2-1 até 0, inclusive, e t1-1 até t1-t2:

    cont = t1;
    ...
    for(is=t2-1;is>=0;is--)
  • Bruno Januário replied 6 years ago

    Por favor me ajudem neste código? Eu não estou achando o erro. Está dando "Wrong answer", mas ele deu certo com os exemplos fornecidos no problema.

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    main(){
           int i, t1=0, t2=0, nt, is, cont=0, s=0;
           char p1[1000], p2[1000], caso[20];
           scanf("%i",&nt);
           for(i=0;i<nt;i++)
           {
              scanf("%s %s",p1,p2);
              t1=strlen(p1);
              t2=strlen(p2);
              cont=t1+1;
              if(t2>t1)
                 strcpy(caso,"nao encaixa");
              else
              {
                 for(is=t2;is>0;is--)
                 {
                    cont--;
                    if(p1[cont]==p2[is])
                    {
                       s++;
                    }  
                 }
                 if(s!=t2)
                    strcpy(caso,"nao encaixa");
                 else
                    strcpy(caso,"encaixa");
              s=0;
              }
           printf("%s\n",caso);
           }
    system("Pause");
    }
  • Gabriel Duarte replied 6 years ago

    O erro estava somente nessa parte:

    if(strcmp(a, b) == 1)
            {
                printf("nao encaixa\n");
                continue;
            }

    Só troquei para:

    if(strlen(b) > strlen(a))
            {
                printf("nao encaixa\n");
                continue;
            }

    Agora passou.

    MOD
1 of 2