AC code 1
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n, m, x;
int qpow()
{
int cnt = 1;
while(m)
{
if(m % 2 == 1)
{
cnt = cnt * n % x;
}
n = n * n % x;
m /= 2;
}
return cnt;
}
signed main()
{
cin >> n >> m >> x;
cout << n << "^" << m << " mod " << x << "=" << qpow();
}
AC code 2
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n, m, x;
int qpow()
{
int cnt = 1;
while(m)
{
if(m % 2 == 1)
{
cnt = cnt * n % x;
}
n = n * n % x;
m /= 2;
}
return cnt;
}
signed main()
{
cin >> n >> m >> x;
cout << n << "^" << m;
cout << " mod " << x << "=" << qpow();
}
其中,code1在我的编译器下输入样例显示的是7^0 mod 9=7,而code2显示的是2^10 mod 9=7。请问这是为什么呢?两个在评测机里的输出都是一样的