Pagini recente » Cod sursa (job #2654379) | Borderou de evaluare (job #996836) | Cod sursa (job #317771) | Cod sursa (job #803275) | Cod sursa (job #2838557)
#include <fstream>
#include <list>
using namespace std;
_int64 MOD = 1, SUM, A, C;
char B;
int i, nr;
list<int> result;
int value(char ch);
_int64 power(_int64 base, _int64 exp);
int main()
{
ifstream f("calcul.in");
ofstream g("calcul.out");
f >> A >> B >> C;
nr = value(B);
for (i = 1; i <= C; ++i) MOD *= 10;
for (i = 1; i <= nr; ++i) SUM += power(A, i);
SUM %= MOD;
for (; SUM; SUM /= 10) result.push_front(SUM % 10);
while (result.size() != C) result.push_front(0);
for (auto elem : result) g << elem;
g << '\n';
}
int value(char ch)
{
return ch >= '0' && ch <= '9' ? (int)ch - '0' : (int)ch - 'A' + 10;
}
_int64 power(_int64 base, _int64 exp)
{
_int64 rez = 1;
for( ; exp; exp >>= 1)
{
if (exp % 2)
{
rez *= base;
--exp;
}
base *= base;
}
return rez;
}