求整数部分,联想到科学计数法
设n^n = a*10^x,a的整数部分即为n的整数部分,也就是我们所求的
两边取对数,nlgn = x + lga;
求得a = 10^(nlgn-x),又应为0<a<10,得到lga即为nlg的小数部分
于是a = 10^(nlgn-floor(nlgn))取整
#include <iostream>
#include <string>
#include <vector>
#include <stack>
#include <queue>
#include <deque>
#include <set>
#include <map>
#include <algorithm>
#include <sstream>
#include <utility>
#include <cstring>*/
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cctype>
#define CLOSE() ios::sync_with_stdio(false)
#define CLEAR(a, b) memset(a, b, sizeof(a))
#define IN() freopen("in.txt", "r", stdin)
#define OUT() freopen("out.txt", "w", stdout)
const int maxn = 100005;
using LL = long long;
using UI = unsigned int;
using namespace std;
//------------------------------------------------------------------------------------------//
int main() {
#ifdef _DEBUG
//IN(); OUT();
#endif
//for (int i = 1; i <= 10; i++) cout << i << ' ' << log10(qpow(i, i)) << endl;
int T;
scanf("%d", &T);
while (T--) {
LL n = 0;
int ans = 0;
scanf("%d", &n);
ans = pow(10, n*log10(n) - floor(n*log10(n)));
printf("%d\n", ans);
}
return 0;
}
HDUOJ 1160 Leftmost Digit
最新推荐文章于 2024-07-22 09:38:37 发布