Niestety, nie byliśmy w stanie w pełni poprawnie wyświetlić tego pliku, ponieważ nie jest zakodowany w UTF-8.
Możesz pobrać ten plik i spróbować otworzyć go samodzielnie.
#include <iostream> #include <math.h> using namespace std; /* run this program using the console pauser or add your own getch, system("pause") or input loop */ //unsigned long long n, i, a, a_old,ile,suma,a_nowe; <<---------- by�o i dzia�a�o na liczbach do 10^18 unsigned long long n, i, ile,suma, a, a_old, a_nowe; unsigned long long dopiszcyfry (unsigned long long b, unsigned long long b_old) //funkcja licz�ca ile minimalnie cyfr doda� do danej b, �eby by�a wi�ksza od starej b_old { unsigned long long zwroc; double iledziesiatekwieksza=log10(b_old/b); unsigned long long iledziesiatek=floor(iledziesiatekwieksza); a_nowe=b*pow(10,iledziesiatek+1); unsigned long long czy0=floor((b_old+1)/pow(10,iledziesiatek))-b; //sprawdza czy b_old+1 ma taki sam pocz�tek jak b if (a_nowe>10*b&&czy0==0) {a_nowe=b_old+1; zwroc=iledziesiatek; } else zwroc=iledziesiatek+1; //cout<<"\n"<<b_old<<" jest wieksze od "<< b<<" wiec trzeba dopisac " << zwroc << " liczb i nowa liczba to "<< a_nowe; return zwroc; } int main(void) { ios_base::sync_with_stdio(0); cin>>n; //n - 10^6 przypadkow a_old=0;suma=0; for (i=0;i<n;i++) { cin>>a; if (a<=a_old) {ile=dopiszcyfry(a,a_old);suma=suma+ile;a=a_nowe;} //je�eli nast�pna wpisana liczba jest mniejsza od poprzedniej, to dodaje cyfry a_old=a; } cout<<suma; return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | #include <iostream> #include <math.h> using namespace std; /* run this program using the console pauser or add your own getch, system("pause") or input loop */ //unsigned long long n, i, a, a_old,ile,suma,a_nowe; <<---------- by�o i dzia�a�o na liczbach do 10^18 unsigned long long n, i, ile,suma, a, a_old, a_nowe; unsigned long long dopiszcyfry (unsigned long long b, unsigned long long b_old) //funkcja licz�ca ile minimalnie cyfr doda� do danej b, �eby by�a wi�ksza od starej b_old { unsigned long long zwroc; double iledziesiatekwieksza=log10(b_old/b); unsigned long long iledziesiatek=floor(iledziesiatekwieksza); a_nowe=b*pow(10,iledziesiatek+1); unsigned long long czy0=floor((b_old+1)/pow(10,iledziesiatek))-b; //sprawdza czy b_old+1 ma taki sam pocz�tek jak b if (a_nowe>10*b&&czy0==0) {a_nowe=b_old+1; zwroc=iledziesiatek; } else zwroc=iledziesiatek+1; //cout<<"\n"<<b_old<<" jest wieksze od "<< b<<" wiec trzeba dopisac " << zwroc << " liczb i nowa liczba to "<< a_nowe; return zwroc; } int main(void) { ios_base::sync_with_stdio(0); cin>>n; //n - 10^6 przypadkow a_old=0;suma=0; for (i=0;i<n;i++) { cin>>a; if (a<=a_old) {ile=dopiszcyfry(a,a_old);suma=suma+ile;a=a_nowe;} //je�eli nast�pna wpisana liczba jest mniejsza od poprzedniej, to dodaje cyfry a_old=a; } cout<<suma; return 0; } |