1. 程式人生 > >大數低速冪運算模板(c++)+python大數冪

大數低速冪運算模板(c++)+python大數冪

簡介

自己從大數加法改過來的模板,低速計算n的t次冪,n,t小於等於100速度能夠保證

模板

#include <bits/stdc++.h>
using namespace std;
string cal(string a,int cs)
{
  string jk=a;
  string jc=a;
  reverse(a.begin(),a.end());
  for(int k=0;k<cs-1;k++)
  {
    for(int i=jk.size();i<a.size();i++)
    jk='0'+jk;
    reverse(jk.begin(),jk.end());
    int jw=0,n,now;
    string t="";
    for(int i=0;i<a.size();i++)
    {
      n=jk[i]+a[i]-'0'-'0'+jw;
      jw=n/10;
      now=n%10;
      t+=char(now+'0');
    }
    if(jw)
    t+="1";
    a=t;
    jk=jc;
  }
  reverse(a.begin(),a.end());
  return a;
}
string qp(int cs,int n)
{
  stringstream s;
  s<<cs;
  string a;
  s>>a;
  string t;
  for(int i=0;i<n;i++)
  {
    t=cal(a,cs);
    //cout<<t<<"\n";
    a=t;
  }
  return a;
}
int main()
{
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int t;
  cin>>t;
  while(t--)
  {
    int n,cs;
    cin>>cs>>n;
    if(n)
    cout<<qp(cs,n-1)<<endl;
    else
    cout<<1<<endl;
  }
}

python版本(速度較快)

t=int(input())
for i in range(t):
    a,b=map(int,input().split())
    print(a**b)

使用

先輸入計算的次數,然後每行兩個數第一個數是n第二個數是t