zoukankan      html  css  js  c++  java
  • luogu P1405 苦恼的小明(欧拉定理)

    题意

    求a1^a2^a3^...^an(mod10007)n<=1000000,a[i]<=10000

    题解

    明眼人一眼就可以看出是欧拉定理的推论。

    首先这个题是错的,没说保证互质。

    然而我背错了定理,然后就一直减一。

    之后发现要求phi,求完之后一直RE,交了题解还RE、、、

     1 #include<iostream>
     2 #include<cstring>
     3 #include<cstdio>
     4 #include<cmath>
     5 #include<algorithm>
     6 using namespace std;
     7 const int N=5000000;
     8 int phi[N],a[N],n,ans;
     9 void get_phi(){
    10     phi[1]=1;
    11     for(int i=2;i<=10010;i++)
    12         if(!phi[i])
    13         for(int j=i;j<=10010;j+=i)
    14         {
    15             if(!phi[j])phi[j]=j;
    16             phi[j]=phi[j]/i*(i-1);
    17         }
    18 }
    19 int ksm(int x,int b,int md){
    20     int tmp=1;
    21     x%=md;
    22     while(b){
    23         if(b&1){
    24             tmp=(tmp*x)%md;
    25         }
    26         b>>=1;
    27         x=(x*x)%md;
    28     }
    29     return tmp;
    30 }
    31 int dfs(int x,int md){
    32     if(x==n)return a[n]%md;
    33     int y=dfs(x+1,phi[md]);
    34     return ksm(a[x],y,md);
    35 }
    36 int main(){
    37     scanf("%d",&n);
    38     for(int i=1;i<=n;i++){
    39         scanf("%d",&a[i]);
    40     }
    41     get_phi();
    42     printf("%d",dfs(1,10007)); 
    43 }
  • 相关阅读:
    jmeter响应的二进制数据转化为中文
    jmeter设置中文显示与更换背景
    jmeter更改响应数据格式为中文显示
    过渡性模块重载
    金蝶自动生成拆卸单
    0123工作备份2
    0123工作备份1
    0123工作备份
    oracle中如何修改用户名和密码
    0118工作备份
  • 原文地址:https://www.cnblogs.com/Xu-daxia/p/9563801.html
Copyright © 2011-2022 走看看