link do zadania --> http://pl.spoj.com/problems/PA05_POT/
kod:
#include <iostream>
#include <math.h> // pow
#include <sstream> //stringstream
#include <iomanip> //setprecission
using namespace std;
int main ()
{
int l_testow;
double liczba, wykladnik;
int licznik = 0;
cin >> l_testow;
cout << setprecision (100); // zamienia liczby z postaci "naukowej" do dziesietnej
while ( l_testow > licznik )
{
cin >> liczba >> wykladnik;
double wynik = pow (liczba, wykladnik ); //potegowanie
cout <<wynik<< endl;
stringstream s; //potrzeby do konwersji string to int
s << wynik;
string convert = s.str();
double dlugosc = convert.size();
cout << convert[dlugosc-1]<<endl;
licznik++;
}
return 0;
}
Witam wszystkich serdecznie! Problem polega na tym że SPOJ nie zalicza mi zadania, a to zapewne dlatego, bo przy większych liczbach do stringa zapisuje mi się liczba w postaci naukowej. No więc na wyjściu zamiast ostatniej cyfry dostaje liczbę miejsc po przecinku...
setprecision działa tylko do linijki:
cout <<wynik<< endl;
i pokazuje liczbę dziesiętną.
Do stringa zapisuje się jak już wspomniałem tylko w postaci naukowej.
Może ktoś z tym pomóc? Z tego co wyczytałem to próbowałem gdzieś "włożyć" w kod std::fixed ale nie podziałało, może dlatego że nie wiem jak go dokładnie użyc :P
Jestem "nowy" w programowaniu więc proszę o wyrozumiałość :)