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; } |
English