////edycja postu, poprzednia treść nieważna
edit
mam pytanie, bo zmodyfikowałem mój kod, aby byl zgodny z zadaniem(N przypadków testowych, wypisywanie NIE gdy nie ma okresu) i coś zaczęło się psuć.
KOD:
#include <iostream>
#include <string>
using namespace std;
int ilezer(int a)
{
int e = 0;
while(a > 1)
{
e++;
a/=10;
}
int wy = 10;
while(e--)
wy*=10;
return wy;
}
int main()
{
int N;
cin >> N;
while(N--)
{
int p, q, licz = 0;
cin >> p >> q;
if(p > q)
p-=q;
string okres;
bool czy = false;
const int mnoznik = ilezer(q);
long long reszta = p * mnoznik;
long long resztapocz = reszta;
while(true)
{
licz++;
int ile = reszta / q;
reszta%=q;
reszta*=mnoznik;
//cout << ile; chce to miec w stringu
char wrzuc = static_cast<char>(ile) + '0';
okres.push_back(wrzuc);
if(reszta == 0)
{
cout << "NIE";
return 0;
}
if(reszta == resztapocz)
break;
}
cout << okres << "\n";
}
return 0;
}
Przykład testowy:
4 // liczba przypadkow
1 11 //p jest pierwsze, po nim q
1 6
1 30
5 4
No i odpowiedz do tego:
09
6
3
NIE
Mój program po wpisaniu 1 11 wypisuje 9 (bez zera ;/), ale dla testu 1 6 już się zawiesza. Co jest źle?