zoukankan      html  css  js  c++  java
  • UVA 11029 Leading and Trailing

    UVA_11029

        两数乘法的后三位自然是由各自后三位决定的,因此对于后三位我们完全可以用快速幂取模来做,但前三位就不行了。

        但对于n^k我们可以做变形10^(k*logn),这样又由于10^x只是改变小数点的位置我们自然就不用去考虑了,因此前3位只取决于10^(2+fmod(k*logn,1)),当输入最后结果的时候,由于要的是精确的前3位,所以应用强制转型忽略掉小数位,而不能直接用%.0f输出。

    #include<stdio.h>
    #include<string.h>
    #include<math.h>
    int N, K;
    long long int dfs(int a, int n)
    {
    if(n == 1)
    return a % 1000;
    long long int ans = dfs(a, n / 2);
    ans = (ans * ans) % 1000;
    if(n % 2)
    return (ans * a) % 1000;
    else
    return ans;
    }
    void solve()
    {
    int ans, res;
    scanf("%d%d", &N, &K);
    ans = (int)pow(10, 2 + fmod(K * log10(N), 1));
    res = dfs(N, K);
    printf("%d...%03d\n", ans, res);
    }
    int main()
    {
    int t;
    scanf("%d", &t);
    while(t --)
    {
    solve();
    }
    return 0;
    }


  • 相关阅读:
    【Spring Framework】10、代理模式
    【Spring Framework】8、使用注解开发
    Codeforces 516E
    AtCoder Grand Contest 055 题解
    Codeforces 1606F
    贪心/构造/DP 杂题选做
    整数拆分最大乘积
    CSP-S2021 被碾压记
    洛谷 P2791
    LCT 小记
  • 原文地址:https://www.cnblogs.com/staginner/p/2284698.html
Copyright © 2011-2022 走看看