题目描述
一个数字s,这个数字很大,它的位数为n,si为s从左往右第i个数字,
求T
输入
每一行一个数字m(0<=m<=10^1000000)
输出
123
样例输入
123
样例输出
108
提示
样例中T = (1^1 * 2 ^ 2 * 3^3)mod 1000000007
分析:
快速幂
#include <bits/stdc++.h>
using namespace std;
const long long MOD=1000000007;
string str;
long long fast(long long a,long long b){
long long ans=1;
while(b>0){
if(b&1){
ans=ans*a%MOD;
}
a=a*a%MOD;
b>>=1;
}
return ans;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
while(cin>>str){
long long ans=1;
for(int i=0;i<str.length();i++){
ans=(ans*fast(str[i]-'0',i+1))%MOD;
}
cout<<ans<<endl;
}
return 0;
}