这是什么情况
查看原帖
这是什么情况
990387
Leo11楼主2023/9/25 17:00

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。请问这是为什么呢?两个在评测机里的输出都是一样的

2023/9/25 17:00
加载中...