大数低速幂运算模板(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

猜你喜欢

转载自www.cnblogs.com/baccano-acmer/p/10152105.html