• E


    - 题目大意

       如题目中所说一样,求计算a1^a2^a3^a4......^an模m的值。

    - 解题思路

       利用欧拉降幂公式,和欧拉函数即可解决。

    - 代码

    #include<iostream>
    #include<cstring>
    using namespace std;
    long long b;
    long long num[10000];
    long long powMod(long long a, long long n,long long p)
    {
    	long long ans = 1;
    	for (; n > 0; n >>= 1)
    	{
    		if (n & 1)
    			ans = ans * a%p;
    		a = a * a%p;
    	}
    	return ans;
    }
    long long getPhi(long long n) {
    	int phi = n;
    	for (int i = 2; i*i <= n; i++) {
    		if (n%i != 0) continue;
    		phi = phi / i * (i - 1);
    		while (n%i == 0) n /= i; 
    	}
    	if (n > 1) { 
    		phi = phi / n * (n - 1);
    	}
    	return phi;
    }
    long long ss(long long d, long long M) {
    	if (d == b - 1)
    		return num[d] % M;
    
    	long long phi = getPhi(M);
    	long long c = ss(d + 1, phi) + phi;
    	return powMod(num[d], c, M);
    }
    
    int main()
    {
    	char a[10];
    	long long c = 1;
    	while (cin >> a)
    	{
    		if (!strcmp(a,"#"))
    			break;
    		cin >> b;
    		for (long long i = 0; i < b; i++)
    			cin >> num[i];
    		long long e = atoi(a);
    		cout << "Case " << "#" << c << ": " << ss(0,e)<< endl;
    		c++;
    		
    	}
    return 0;
    }
    

      

  • 相关阅读:
    JVM classloader
    面试整理
    工具配置链接
    IntelliJ IDEA 热部署
    IntelliJ IDEA 常用快捷键
    类文件结构
    判断对象存活的方法
    JVM 运行时数据区域
    vim编辑16进制
    阿里云yum源
  • 原文地址:https://www.cnblogs.com/alpacadh/p/8448355.html
Copyright © 2020-2023  润新知