列表

详情


NC213099. 突然想到一个算法

描述


Tom猫突然想到一个的算法。请你告诉他的值是多少。答案对1000000007取模。

输入描述

输入第一行包含一个整数,代表测试的数据组数。
随后行每行一个整数的意义如题目描述所示。

输出描述

输出共行,每行输出一个整数代表答案。

示例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";
	}
}

上一题