NC213099. 突然想到一个算法
描述
输入描述
输入第一行包含一个整数,代表测试的数据组数。
随后行每行一个整数,的意义如题目描述所示。
输出描述
输出共行,每行输出一个整数代表答案。
示例1
输入:
4 1 3 610 99999
输出:
1 729 252991518 918429053
C(clang11) 解法, 执行用时: 453ms, 内存消耗: 504K, 提交时间: 2020-11-20 22:50:06
# include <stdio.h> const int mod = 1e9 + 7; int pow(int x, int p) { int ans = 1 % mod; while (p) { if (p & 1) { ans = 1ll * ans * x % mod; } x = 1ll * x * x % mod; p >>= 1; } return ans; } void solve() { int n; scanf("%d", &n); int ans = n; for (int i = 2; i <= n; i++) { ans = pow(ans, i); } printf("%d\n", ans); } int main() { int T; scanf("%d", &T); while (T--) { solve(); } return 0; }
C++(clang++11) 解法, 执行用时: 400ms, 内存消耗: 504K, 提交时间: 2020-11-20 19:35:58
#include<bits/stdc++.h> using namespace std; #define ll long long #define mod 1000000007 ll kuai(ll a,ll b){ ll ans=1; while(b){ if(b&1) ans=(a*ans)%mod; b>>=1; a=a*a%mod; } return ans; } int main(){ int n; ll m; cin>>n; while(n--){ cin>>m; ll a=m; for(int i=1;i<=m;++i){ a=kuai(a,i); } cout<<a<<"\n"; } }