UVA - 11029 - Leading and Trailing (数学)

    xiaoxiao2022-07-14  161

    题目链接:https://cn.vjudge.net/problem/UVA-11029

    题意:求的前三位数字和后三位数字中间用...连接。

    思路:后  位直接快速幂取余就行了,主要是前三位,我们定义,两边同时取对数,,根据公式, ,可以得到,这个数很大,显然不能直接计算,我们定义  为  的小数部分,b为  的整数部分,则。所以,显然  的前几位数肯定是由  决定的,这是一个介于之间的小数,所以, 的前  位数就为。

    #include <bits/stdc++.h> using namespace std; #define ll long long const int mod = 1000; ll n, k; ll qpow(ll a, ll b) { a %= mod; ll ans = 1; while(b) { if(b & 1) ans = ans * a % mod; a = a * a % mod; b >>= 1; } return ans; } int main() { int T; scanf("%d",&T); while(T--) { scanf("%lld%lld",&n, &k); ll ed = qpow(n, k); double a = k * log10(n); double b = a - floor(a); ll be = pow(10, b) * 100; printf("%lld...lld\n",be, ed); } }

     

    最新回复(0)