嘤嘤嘤,快速幂取模都不会了???自闭了!
取模运算(“Modulo Operation”)和取余运算(“Complementation ”)两个概念有重叠的部分但又不完全一致。主要的区别在于对负整数进行除法运算时操作不同。取模主要是用于计算机术语中。取余则更多是数学概念。
取余应该这样写 (sum + xxx + MOD) % MOD 不是直接sum % MOD
计算机里面的取模运算 和数学的取余运算不太一样 然后你们直接sum%mod,会有 负数加正数了
#include <bits/stdc++.h> using namespace std; const int mo = 192608017; long long int mi(long long int a,long long int b) { long long int ans=1; a=a%mo; while(b!=0) { if(b&1)ans=ans*a%mo; b >>= 1; a=a*a%mo; } return ans; } int main() { long long int n,m; long long int sum = 0; cin>>n; for(int i = 1;i <= n;i++) { cin>>m; sum = (sum + mi(m,i) + mo) % mo;//划重点! } cout<<sum%mo; return 0; }