Afişează mesaje
Pagini: [1]
1  infoarena - concursuri, probleme, evaluator, articole / Algoritmiada 2019 / Răspuns: MarceLand : Martie 03, 2019, 11:20:37
La evaluare, sunt afisate doar testele la care am raspuns corect?
2  Comunitate - feedback, proiecte si distractie / Off topic / Răspuns: Universitatea Babes Bolyai : Iunie 26, 2018, 12:36:44
Salut. Poate cineva sa imi zica cu aproximatie care este nivelul de germana necesar pentru a ma putea descurca la admitere si in cadrul cursurilor? Ma situez undeva pe la A2-B1 si as vrea sa aflu daca intr-un interval de circa 1 an este posibil sa ating pe cont propriu un stadiu decent la limba germana, astfel incat sa fiu in stare sa tin pasul cu colegii si profesorii. La scoala, profesoara de germana intentioneaza sa ne predea anul scolar viitorM, in a XII-a, materie de B1.Multumesc anticipat  peacefingers
3  infoarena - concursuri, probleme, evaluator, articole / Informatica / Eroare ciudata(M-am stradit 2 ore, deci as aprecia extrem de tare o mana de aj.) : Septembrie 12, 2017, 18:51:37
Salut.
Este vorba de problema 8 din arhiva de probleme. In ciuda faptului ca(cel putin din punctul meu de vedere) codurile urmatoare sunt absolut identice din privinta modului de rezolvare, sursa A(scrisa de mine) primeste doar 60 de pct, pe cand sursa B(cea din care m-am inspirat din solutiile trimise) primeste 100 de pct. Toate cele patru erori pe care le primeste sursa A sunt: Time Limit Exceeded. Nu vad care este diferenta de eficienta dintre sursa A si sursa B. As aprecia in mode deosebit daca cineva ar putea sa desluseasca misterul Smile.
Sursa pe care am scris-o eu:
//Problema 8 - Cifra
 
#include <iostream>
#include <fstream>
#include <string.h>
 
char numar_mare[256];
int T;
short len;
int main()
{
 
 
    std::ifstream in_cifra("cifra.in");
    std::ofstream out_cifra("cifra.out");
 
    //suma pentru n = 100 este egal cu 0
    //ceea ce inseamna ca suma pentru oricare n este date de n = ultimele doua cifre ale lui n
    //ultimele cifre pentru toate numerele incepand de la 100
    short n_egal_100[100];
 
    for(short num = 1; num <= 99; num++)
    {
        n_egal_100[num] = num;
        //aflu ultima cifra a lui n ^ n
        for(int i = 1; i < num; i++)
        {
            n_egal_100[num] *= num;
            n_egal_100[num] %= 10;
        }
        //memorez suma de pana acum
        n_egal_100[num] += n_egal_100[num - 1];
        n_egal_100[num] %= 10;
    }
 
    //numarul de teste pentru N
    in_cifra >> T;
 
    //din nu stiu ce cauza citeste un rand gol, deci il citesc si trec mai departe
    std::string gol;
    std::getline(in_cifra, gol);
    //efectuez cele T teste pentru N
    while((T--) > 0)
    {
        //voi avea numere mari, asadar le voi citi ca string-uri
        in_cifra >> numar_mare;
        len = strlen(numar_mare);
 
        // daca numarul are o cifra
        if(len == 1)
        {
            out_cifra << n_egal_100[numar_mare[0] - '0'] << std::endl;
        }
        //in caz contrar
        else{
 
            out_cifra << n_egal_100[(numar_mare[len - 2] - '0')* 10 + numar_mare[len - 1] - '0'] << std::endl;
        }
 
    }
 
    return 0;
}

sursa B(inspiratia):

#include <fstream>
#include <cstring>
using namespace std;
 
int l,t,i,cif,j;
int a[102];
char n[102];
ifstream fi("cifra.in");
ofstream fo("cifra.out");
 
int main()
{
    fi>>t;
    for(i=1;i<=99;i++)
    {
        a=i;
        for(j=1;j<i;j++)
        {
            a=a*i;
            a=a%10;
        }
        a=a+a[i-1];
        a=a%10;
    }
    for(i=1;i<=t;i++)
    {
        fi>>n;
        l=strlen(n);
        if(l==1)
            fo<<a[n[l-1]-'0']<<'\n';
        else
            fo<<a[(n[l-2]-'0')*10+(n[l-1]-'0')]<<'\n';
 
    }
}
Pagini: [1]
Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines