Jeżeli tak zrobiłeś to zadanie i Ci przeszło, to gratuluję. Autor zadania wujątkowo dał duży [bardzo duży] limit czasu [1 sek] więc pewnie tylko z tego powodu przechodzą też wszelkie chamskie metody, nie wiem, nie testowałem preferowanej w tym wątku metody.
Swoją drogą, wpisałem do googli: "chamskie BigInty" i znalazłem tylko jedną odpowiedż, zupełnie nie na temat.
PS
Jeżeli tak trudno znaleźć wartościowe odpowiedzi i podpowiedzi, na tema zasad podzielności to podpowiem:
1. Aby sprawdzić, czy dowolna liczba [także dowolna BigInt] dzieli się całkowicie przez 3, wystarczy sprawdzić, czy suma cyfr tej liczby dzieli się bez reszty przez 3.
2. Aby sprawdzić czy dowolna liczba [także dowolna BigInt] dzieli się całkowicie przez 15, wystarczy sprawdzić punkt 1 i dodatkowo, sprawdzić, czy ostatnią cyfrą tej liczby jest 5 lub 0.
PS 2
W podanym wyżej kodzie, brakuje chociaż instrukcji break, przerywającej tą [niepotrzebną] pętlę, po znalezieniu szukanej wartości.
PS 3
Efektywne [eleganckie, nie chamskie, nie brutalne, krótkie, bez sprawdzania wszystkiego], rozwiązanie tego zadania, mogłoby wyglądać tak [dla małych wartości n]:
cin >> n;
cout << n - n % 15 << endl;
PS 4
Widać więc, że [w tych bigint'ach lub na stringach]] wystarczy zaimplementować tylko dzielenie modulo i odejmowanie, lub posłużyć się sprytnie zasadami podzielności i zrezygnować z dzielenia modulo - a wtedy zostanie tylko implementacja samego odejmowania.