zoukankan      html  css  js  c++  java
  • hdu1061+hdu2817快速幂


    更新:calculate(a*b)modp通过乘法会溢出,所以通过加法加上long long 实现。

    代码如下:

    #include<iostream>
    using namespace std;
    typedef long long ll ;
    ll power(ll a,ll b,ll p){
        a%=p,b%=p;
        ll ans=0;
        while(b){
            if(b&1) ans=(ans+a)%p;//ans+a最多只会是2*(le18),不会超过ll的范围 
            a=(a*2)%p;
            b>>=1;
        }
        return ans;
    }
    int main(){
        ll a,b,p;
        cin>>a>>b>>p;
        cout<<power(a,b,p)<<endl;
    } 

     

    代码如下

    hdu1061:

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 typedef unsigned int ui;
     4 typedef long long ll;
     5 typedef unsigned long long ull;
     6 #define pf printf
     7 #define mem(a,b) memset(a,b,sizeof(a))
     8 #define prime1 1e9+7
     9 #define prime2 1e9+9
    10 #define pi 3.14159265
    11 #define lson l,mid,rt<<1
    12 #define rson mid+1,r,rt<<1|1
    13 #define scand(x) scanf("%llf",&x) 
    14 #define f(i,a,b) for(int i=a;i<=b;i++)
    15 #define scan(a) scanf("%d",&a)
    16 #define mp(a,b) make_pair((a),(b))
    17 #define P pair<int,int>
    18 #define dbg(args) cout<<#args<<":"<<args<<endl;
    19 #define inf 0x7ffffff
    20 inline int read(){
    21     int ans=0,w=1;
    22     char ch=getchar();
    23     while(!isdigit(ch)){if(ch=='-')w=-1;ch=getchar();}
    24     while(isdigit(ch))ans=(ans<<3)+(ans<<1)+ch-'0',ch=getchar();
    25     return ans*w;
    26 }
    27 int n,m,t;
    28 const int maxn=1e5+10;
    29 const int mod=10;
    30 int pow(int n,int k)
    31 {
    32     int ans=1;
    33     n%=10;
    34     while(k)
    35     {
    36         if(k&1)ans=(ans*n)%mod;
    37         k>>=1;
    38         n=(n*n)%mod;
    39     }
    40     return ans;
    41 }
    42 int main()
    43 {
    44     //freopen("input.txt","r",stdin);
    45     //freopen("output.txt","w",stdout);
    46     std::ios::sync_with_stdio(false);
    47     t=read();
    48     while(t--)
    49     {
    50         n=read();
    51         pf("%d
    ",pow(n,n));
    52     }
    53 } 

    hdu2817:

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 typedef unsigned int ui;
     4 typedef long long ll;
     5 typedef unsigned long long ull;
     6 #define pf printf
     7 #define mem(a,b) memset(a,b,sizeof(a))
     8 #define prime1 1e9+7
     9 #define prime2 1e9+9
    10 #define pi 3.14159265
    11 #define lson l,mid,rt<<1
    12 #define rson mid+1,r,rt<<1|1
    13 #define scand(x) scanf("%llf",&x) 
    14 #define f(i,a,b) for(int i=a;i<=b;i++)
    15 #define scan(a) scanf("%d",&a)
    16 #define mp(a,b) make_pair((a),(b))
    17 #define P pair<int,int>
    18 #define dbg(args) cout<<#args<<":"<<args<<endl;
    19 #define inf 0x7ffffff
    20 inline int read(){
    21     int ans=0,w=1;
    22     char ch=getchar();
    23     while(!isdigit(ch)){if(ch=='-')w=-1;ch=getchar();}
    24     while(isdigit(ch))ans=(ans<<3)+(ans<<1)+ch-'0',ch=getchar();
    25     return ans*w;
    26 }
    27 int n,m,t;
    28 const int maxn=1e5+10;
    29 const ll mod=200907;
    30 ll pow(ll n,ll  k)
    31 {
    32     ll ans=1;
    33     while(k)
    34     {
    35         if(k&1)ans=(ans*n)%mod;
    36         k>>=1;
    37         n=(n*n)%mod;
    38     }
    39     return ans;
    40 }
    41 int main()
    42 {
    43     //freopen("input.txt","r",stdin);
    44     //freopen("output.txt","w",stdout);
    45     std::ios::sync_with_stdio(false);
    46     t=read();
    47     while(t--)
    48     {
    49         ll a,b,c,d;
    50         scanf("%lld%lld%lld%lld",&a,&b,&c,&d);
    51         if(2*b==(a+c))
    52         {
    53             pf("%lld
    ",(a%mod+(d-1)*(b-a)%mod)%mod);
    54         }
    55         else 
    56         {
    57             ll q=b/a;
    58             pf("%lld
    ",(1ll*a*pow(q,d-1))%mod);
    59         }
    60     }    
    61 } 
  • 相关阅读:
    Ansible安装配置
    Git 工作流程
    使用 Docker 搭建 Tomcat 运行环境
    Linux的cron与%
    配置sonar和jenkins进行代码审查
    Jenkins配置基于角色的项目权限管理
    Jenkins和maven自动化构建java程序
    Jenkins修改workspace和build目录
    Git 进阶指南
    git代码回滚:Reset、Checkout、Revert的选择
  • 原文地址:https://www.cnblogs.com/randy-lo/p/12724924.html
Copyright © 2011-2022 走看看