infoarena informatica de performanta
info
arena
b
log
f
orum
calendar
autentificare
inregistrare
infoarena
>
infoarena - concursuri, probleme, evaluator, articole
>
Informatica
> Subiect:
Eroare ciudata(M-am stradit 2 ore, deci as aprecia extrem de tare o mana de aj.)
Pagini: [
1
]
În jos
« mesajul precedent
următorul mesaj »
Imprimă
Ajutor
Subiect: Eroare ciudata(M-am stradit 2 ore, deci as aprecia extrem de tare o mana de aj.) (Citit de 9348 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
•
skoda888
Strain
Karma: 0
Deconectat
Mesaje: 3
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';
}
}
Memorat
•
GavrilaVlad
Echipa infoarena
Nu mai tace
Karma: 219
Deconectat
Mesaje: 222
Răspuns: Eroare ciudata(M-am stradit 2 ore, deci as aprecia extrem de tare o mana de aj.)
«
Răspunde #1 :
Septembrie 13, 2017, 17:44:32 »
Sursele par a avea aceeasi complexitate intr-adevar. In schimb sesizez ca folosesti std::endl pentru a afisa rand nou. Aceasta din pacate duce si la golirea fortata a buffer-ului de scriere, ceea ce ia timp mult. Ar trebui sa folosesti "\n" in loc de std::endl, care afiseaza rand nou fara a forta golirea buffer-ului.
PS: Ti-am sters mesajul identic din arhiva de probleme. Incearca sa postezi intr-un singur loc, preferabil pe topicul problemei (il gasesti de pe pagina problemei, dand scroll pana jos la sectiunea de comentarii).
Memorat
Pagini: [
1
]
În sus
Imprimă
infoarena
>
infoarena - concursuri, probleme, evaluator, articole
>
Informatica
> Subiect:
Eroare ciudata(M-am stradit 2 ore, deci as aprecia extrem de tare o mana de aj.)
« mesajul precedent
următorul mesaj »
Schimbă forumul:
Selectează o destinaţie:
-----------------------------
infoarena - concursuri, probleme, evaluator, articole
-----------------------------
=> Concursuri
===> Junior Challange 2023
===> Algoritmiada 2022
=====> Runda 1
=====> Runda 2
=====> Runda 3
=====> Runda 4
===> Summer Challenge 2021
===> Junior Challenge 2021
===> FMI No Stress 10
===> Winter Challenge 2020
===> Autumn WarmUp 2020
===> Summer Challenge 2020
===> Junior Challenge 2020
===> Concurs de incalzire 2020
===> FMI No Stress 9
===> Autumn WarmUp 2019
===> Summer Challenge 2019
===> Junior Challange 2019
===> Algoritmiada 2019
===> Info Oltenia 2019
===> Arhiva concursuri
=====> Info Oltenia 2018
=====> Junior Challenge 2018
=====> Algoritmiada 2018
=====> AGM 2018
=====> Grigore Moisil 2018
=====> RCPC 2018
=====> Fmi No Stress 8
=====> Urmasii lui Moisil 2017
=====> Grigore Moisil 2017
=====> Prosoft @ NT
=====> Algoritmiada 2017
=====> PreOJI 2017
=====> FMI No Stress 2017
=====> AGM 2017
=====> Lot 2017
=====> ACM ICPC Faza Nationala 2017
=====> PreOJI 2016
=====> ONIS 2016
=====> Grigore Moisil 2016
=====> Urmasii lui Moisil 2016
=====> AGM 2016
=====> Algoritmiada 2016
=====> FMI No Stress 6
=====> Urmasii lui Moisil 2015
=====> FMI No Stress 5
=====> ONIS 2015
=====> Concursul National de Soft Grigore Moisil Lugoj
=====> ACM-ICPC Faza Nationala 2014-2015
=====> Infoarena Monthly 2014
=====> Concurs Mihai Patrascu 2013
=====> Algoritmiada 2015
=====> AGM 2015
=====> Junior Challenge 2015
=====> ONIS 2014
=====> Algoritmiada 2014
=====> FMI No Stress 4
=====> preONI 2006
=====> .com 2012
=====> Infoarena Monthly 2012
=====> Code Pandas
=====> Algoritmiada 2013
=====> FMI No Stress 3
=====> FMI No Stress 2012
=====> Junior Challenge 2012
=====> Algoritmiada 2012
=====> .com 2011
=====> Girls Programming Camp 2011
=====> Algoritmiada 2011
=====> F11 Competition 2011
=====> Tiberiu Popoviciu 2011
=====> Grigore Moisil 2011
=====> RMMS 2011
=====> FMI No Stress 2010
=====> Grigore Moisil 2010
=====> .com 2009
=====> Stelele Informaticii 2009
=====> Stelele Informaticii 2010
=====> Algoritmiada 2009
=====> Algoritmiada 2010
=====> Grigore Moisil 2009
=====> CCEX 2009
=====> Summer Challenge 2009
=====> All You Can Code 2008
=====> Selectie echipe ACM ICPC, UPB 2008
=====> Junior Challenge 2008
=====> Happy Coding 2008
=====> preONI 2008
=====> Grigore Moisil 2008
=====> Winter Challenge 2008
=====> Happy Coding 2007
=====> Autumn Warmup 2007
=====> preONI 2007
=====> Summer Challenge 2007
=====> Junior Challenge
=====> Winter Challenge 1
=====> Unirea 2007
=====> Happy Coding 2006
=====> Autumn WarmUp 2006
=====> Summer Challenge Doi
=====> Summer Challenge
=====> Happy coding
=====> Grigore Moisil
=====> Happy Birthday Infoarena
===> RCPC 2019
===> Summer Challenge Trei
=> Arhiva de probleme
===> Probleme pentru bacalaureat
=> Arhiva Infoarena Monthly
=> Arhiva ACM
=> Arhiva educationala
=> Concursuri virtuale
=> Informatica
===> Teme
=> Articole
===> Downloads
=> Probleme externe
===> .CAMPION
===> SGU
===> TIMUS
===> UVA
===> SPOJ
===> PKU
===> TJU
-----------------------------
Comunitate - feedback, proiecte si distractie
-----------------------------
=> Implica-te!
===> Arhiva educationala
===> Imbunatatire teste
===> Development
===> Scrie articole
===> Extinde arhiva
=> Blog
=> Feedback infoarena
===> Sondaje
===> Arhiva
===> IAP (Infoarena Proposal)
=> Off topic
Se încarcă ...