• 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;
    }


  • 相关阅读:
    相关分析[SDOI2017]
    排序[HEOI2016/TJOI2016]
    逆序对[AHOI2008]
    逆序对数列[HAOI2009]
    小Z的袜子「2009国家集训队」
    http抓包—Content-Type讲解
    mysql——leetcode问题记录
    linux--vi命令
    Linux—echo命令
    Linux—文件命令之touch命令
  • 原文地址:https://www.cnblogs.com/staginner/p/2284698.html
Copyright © 2020-2023  润新知