Решение задачи 2^N с Acmp

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


Необходимо вычислить значение 2n.

Код

a = int( input()) 
print(2**a)

         

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


Код

#include <bits/stdc++.h>

using namespace std;

string func(string s){
    string res = "";
    int temp = 0;
    for(int i = s.size() - 1; i >= 0; --i){
        int t = (int(s[i]) - 48) * 2 + temp;
        temp = 0;
        if(t >= 10)
            temp = 1;
        res.insert(0, 1, char(t % 10 + 48));
    }
    if(temp)
        res.insert(0, 1, char(temp + 48));
    return res;
}

int main()
{

    int n;
    cin >> n;
    string s = "2";
    for(int i = 1; i < n; ++i){
        s = func(s);
    }
    cout << s;
    return 0;
}

         

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


Код

#include<vector>
#include<iostream>
#define PB push_back
#define ll long long
using namespace std;
typedef vector<int> lll;

istream& operator >>(istream& stream,lll& a){
    string s;
    stream >> s;
    for(int i = s.size() - 1; i >= 0; --i)
        a.PB(s[i] - '0');
    return stream;
}
ostream& operator <<(ostream& stream, lll a){
    for(int i = a.size() - 1; i >= 0; --i)
        stream << a[i];
        return stream;
}
bool operator >(lll a, lll b){
    if(a.size() > b.size())
        return true;
    if(a.size() < b.size())
        return false;
        for(int i = a.size() - 1; i >= 0; --i){
            if(a[i] > b[i])
                return true;
            if(a[i] < b[i])
                return false;
        }
    return false;
}
lll operator +(lll a, lll b){
    lll c; int i, r = 0;
    for(i = 0; i < a.size() || i < b.size();  ++i){
    if(i < a.size())
        r += a[i];
    if(i < b.size())
        r += b[i];
    c.PB(r % 10);
    r /= 10;
    }
    if(r)
        c.PB(r);
    return c;
}
lll operator -(lll a, lll b){
    lll c;
    int i,r = 0;
    for(i = 0; i < a.size(); ++i){
        r += a[i];
        if(i < b.size())r -= b[i];
        if(r<0){
            c.PB(r + 10); r = -1;
        }
        else{
            c.PB(r % 10);
            r = 0;
        }
    }
    while(c.size() > 1 && c.back() == 0)
        c.pop_back();
    return c;
}
lll operator *(lll a,ll b){
    lll c;
    int i;
    ll r = 0;
    if(b == 0){
        c.PB(0);
        return c;
    }
    for(i = 0; i < a.size(); ++i){
        r += a[i] * b;
        c.PB(r % 10); r /= 10;
    }
    while(r){
        c.PB(r % 10);
        r /= 10;
    }
    return c;
}

ll operator % (lll a,ll b) {
    lll c; 
    int i; 
    ll r = 0,t;
    for (i = a.size() - 1; i >= 0; --i){
        r = r * 10 + a[i]; 
        t = r / b; 
        r -= t * b;
    }
    while (c.size () > 1 && c[c.size() - 1] == 0) 
        c.resize(c.size() - 1);
    return r;
}


int main() {
    lll a;
    ll b,n; 
    a.PB(1);
    b = 2;
    cin >> n;
    for(int i = 0; i < n; i++)
        a = a * b;
    cout << a;
    return 0;
}

         

Sadijon Photo Автор: Sadijon



Комментарии

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