Решение задачи Степень с Меньшиков

Без пояснения   Просмотров: 81


Для натуральных чисел a и n вычислить an.


Код

#include <iostream>
#include <cstring> // для memset
 
using namespace std;
const int max_len = 6700; // для a = 9 и n = 7000
struct BigInt
{
    int digits[max_len];
    int amount;
    BigInt()
    {
        memset(digits,0,sizeof(digits));
        amount = 1;
    }
    BigInt(int n)
    {
        memset(digits,0,sizeof(digits));
        digits[0] = n;
        amount = 1;
    }
} res;
int osn = 10;
int a,n;
BigInt operator * (const BigInt &a, const int mul)
{
    BigInt res;
    int r = 0;
    for (int i=0;i<a.amount;i++)
    {
        res.digits[i] = a.digits[i]*mul + r;
        r = res.digits[i]/osn;
        res.digits[i] -= r*osn;
    }
    res.amount = a.amount;
    while (r>0)
    {
        res.digits[res.amount++] = r%osn;
        r = r/osn;
    }
    return res;
}
void input()
{
    cin>>a>>n;
    res = BigInt(a);
}
void output(BigInt &a)
{
    for (int i = a.amount-1;i>=0;i--)
        cout<<a.digits[i];
}
void solve()
{
    for (int i=2;i<=n;i++)
        res = res*a;
    output(res);
}
int main()
{
    input();
    solve();
    return 0;
}

         

Администратор Photo Автор: Администратор




Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться