• hdu-2837 Calculation---指数循环节


    题目链接:

    http://acm.hdu.edu.cn/showproblem.php?pid=2837

    题目大意:

    已知f(0) = 1,0^0 =1,【注意,0的其他任意次方为0,虽然题没有直接给出~】,还已知f(n) = (n%10)^f(n/10),让你求f(n)%m. (2 ≤ n , m ≤ 10^9)

    解题思路:

    通过这个就可以递归求解。

    f(n) = f(n%10)(f(n/10)%Phi(m)+Phi(m))%m

    递归返回值就是f(n)%m+m

    注意等于0的细节部分

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cmath>
     4 #include<cstring>
     5 using namespace std;
     6 typedef long long ll;
     7 int euler_phi(int n)//求单个
     8 {
     9     int m = (int)sqrt(n + 0.5);
    10     int ans = n;
    11     for(int i = 2; i <= m; i++)if(n % i == 0)
    12     {
    13         ans = ans / i * (i - 1);
    14         while(n % i == 0)n /= i;
    15     }
    16     if(n > 1)ans = ans / n * (n - 1);
    17     return ans;
    18 }
    19 ll mul(ll a, ll b, ll m)
    20 //求a*b%m
    21 {
    22     ll ans = 0;
    23     a %= m;
    24     while(b)
    25     {
    26         if(b & 1)ans = (ans + a) % m;
    27         b /= 2;
    28         a = (a + a) % m;
    29     }
    30     return ans;
    31 }
    32 ll pow(ll a, ll b, ll m)
    33 {
    34     ll ans = 1;
    35     a %= m;
    36     while(b)
    37     {
    38         if(b & 1)ans = mul(a, ans, m);
    39         b /= 2;
    40         a = mul(a, a, m);
    41     }
    42     ans %= m;
    43     return ans;
    44 }
    45 ll f(ll n, ll m)
    46 {
    47     if(n < 10)return n;
    48     ll p = euler_phi(m);
    49     ll t = f(n / 10, p);
    50     ll ans = pow(n % 10, t, m);
    51     if(n % 10 == 0 && t != 0)return 0;//直接等于0
    52     if(ans == 0)ans = m;//返回值为f(n)%m+m
    53     return ans;
    54 }
    55 int main()
    56 {
    57     int T;
    58     scanf("%d", &T);
    59     while(T--)
    60     {
    61         ll n, m;
    62         scanf("%lld%lld", &n, &m);
    63         printf("%lld
    ", f(n, m) % m);
    64     }
    65     return 0;
    66 }
  • 相关阅读:
    hdu1003 最大连续子序和
    ACM 线性规划
    ACM 概率&&动态规划
    ACM 数论 质因数分解
    ACM 计数
    ACM 概率
    ACM矩形嵌套问题LIS
    ACM 编辑距离
    ACM线性方程
    ACM 错排
  • 原文地址:https://www.cnblogs.com/fzl194/p/9074719.html
Copyright © 2020-2023  润新知