2 条题解

  • 1
    @ 2025-7-8 9:25:23

    这道题先乘在取余是不可行的,因为你在乘的过程中会溢出long long的范围,所以你要在乘的过程中取 下面是常规方法

    #include<bits/stdc++.h> 
    using namespace std; 
    long long b,p,k,s=1; 
    int main(){ 
    	cin>>b>>p>>k; 
    	for(int i=1;i<=p;i++){ 
    		s=s*b; //这里在乘的过程中会溢出
    	} 
    	cout<<b<<"^"<<p<<" mod "<<k<<'='<<s%k; 
    	return 0; 
    }
    

    Accepted

    #include<bits/stdc++.h> 
    using namespace std; 
    long long b,p,k,s=1; 
    int main(){ 
    	cin>>b>>p>>k; 
    	for(int i=1;i<=p;i++){ 
    		s=s*b%k; 	} 
    	cout<<b<<"^"<<p<<" mod "<<k<<'='<<s; 
    	return 0; 
    }
    
    
    • 1
      @ 2025-7-6 11:18:57

      #include<bits/stdc++.h> using namespace std; long long b,p,k,s=1; int main(){ cin>>b>>p>>k; for(int i=1;i<=p;i++){ s=s*b%k; } cout<<b<<"^"<<p<<" mod "<<k<<'='<<s; return 0; }

      • 1

      信息

      ID
      108
      时间
      1000ms
      内存
      256MiB
      难度
      5
      标签
      (无)
      递交数
      38
      已通过
      16
      上传者