Otóż wykonywałem zadanie polegające na wyznaczeniu wartości 1. elementu ciągu oraz różnicy między kolejnymi elementami ciągu, np. dla danych :
4(długość ciągu)
* 1 * 3
odpowiedzią jest "0"(pierwszy element ciągu) i "1"(różnica między kolejnymi elementami ciągu).
Na pisałem więc w Code Blocks'ie wersja 17.12 w C++ taki kod:
#include <iostream>
using namespace std;
long long dc,wzl=0,wol,wpp,wdp;
long long pli,dli, rl;
///funkcja wyznaczająca wartość potęgi 10
long long pt(int y)
{
long long z=1;
for(int k=0;k<y;k++)
{
z=z*10;
}
return z;
}
///funkcja zamieniająca stringa na long long
long long kni(string a)
{
long long x=0;
if(a[0]!='-')
{
wdp=0;
for(int j=18;j>=0;j--)
{
while(a[j]!='0'&&a[j]!='1'&&a[j]!='2'&&a[j]!='3'&&a[j]!='4'&&a[j]!='5'&&a[j]!='6'&&a[j]!='7'&&a[j]!='8'&&a[j]!='9')
{
j--;
//cout<<"a[j] "<<a[j]<<endl;
}
x=x+pt(wdp)*(a[j]-48);
wdp++;
//cout<<"a[j] "<<a[j]<<endl;
//cout<<"x "<<x<<endl;
}
}
else
{
wdp=0;
for(int j=19;j>0;j--)
{
while(a[j]!='0'&&a[j]!='1'&&a[j]!='2'&&a[j]!='3'&&a[j]!='4'&&a[j]!='5'&&a[j]!='6'&&a[j]!='7'&&a[j]!='8'&&a[j]!='9')
{
j--;
}
x=x+pt(wdp)*(a[j]-48);
wdp++;
}
x=x-2*x;
}
return x;
}
string ec[2000000];
string pl,dl;
int main()
{
cin>>dc;
///wyznaczenie pierwszych dwóch wiadomych elementów oraz "odległości" między nimi
for(int i=0;i<dc;i++)
{
cin>>ec[i];
if(wzl==1)
{
wol++;
}
if(ec[i]!="*")
{
if(wzl==0)
{
pl=ec[i];
wpp=i;
}
if(wzl==1)
{
dl=ec[i];
}
wzl++;
}
}
//cout<<"pl[x] "<<pl[12]<<endl;
//int o=pl[0]-48;
//cout<<o<<endl;
///zamiana dwóch pierwszych znanych liczb na long long
pli=kni(pl);
dli=kni(dl);
//cout<<pli<<" "<<dli<<" "<<wol<<endl;
///końcowe obliczenia wyznaczające wynik
rl=(dli-pli)/wol;
cout<<pli-(rl*wpp)<<" ";
cout<<rl;
return 0;
}
Program śmigał jak trzeba, ale po odesłaniu kodu otrzymałem odpowiedź, iż nastąpił błąd wykonania, dodatkowo gdy wstawiłem kod do kompilatora online (https://www.onlinegdb.com/online_c++_compiler), przy pierwszej (i tylko pierwszej) kompilacji wynik był losowy.
Podejrzewam błąd w przeprowadzeniu zamiany ze stringa na long long, ale (jak pewnie widać) nie jestem zbyt doświadczony, więc nie wiem i proszę o pomoc.