社区讨论

不是取GCD嘛,为什么题解直接最小值能过,我取GCD不能过

P8469[Aya Round 1 D] 文文的数学游戏参与者 3已保存回复 5

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
5 条
当前快照
1 份
快照标识符
@mhz4ci7l
此快照首次捕获于
2025/11/15 01:15
4 个月前
此快照最后确认于
2025/11/16 13:52
4 个月前
查看原帖
我的代码
CPP
#include <iostream>
using namespace std;
long long a[100005];
const long long mod = 1e9 + 7;
long long gcd(long long a, long long b)
{
	while (b)
	{
		int r = a;
		a = b;
		b = r % b;
	}
	return a;
}
int main()
{
	int n;
	cin >> n;
	cin >> a[1];
	long long num = a[1];
	for (int i = 2;i <= n;i++)
	{
		cin >> a[i];
		num = gcd(num, a[i]);
	}
	long long ans = 1;
	for (int i = 1;i <= n;i++)
	{
		ans = ans * (a[i] / num);
		ans %= mod;
	}
	cout << num << " " << ans << endl;
	return 0;
}
某题解代码
CPP
#include <iostream>
using namespace std;
int a[100050],n,mgcd=1<<30;
const int mod=1e9+7;
int main()
{
    cin >> n;
    for (int i=1;i<=n;i++)
    {
        cin >> a[i];
        mgcd=min(mgcd,a[i]);
    }
    long long ans=1;
    for (int i=1;i<=n;i++)
        ans=(long long)ans*(a[i]/mgcd)%mod;
    cout << mgcd << " " << ans << endl;
    return 0;
}
CPP
输入:
3
6 10 15

CPP
我的输出:
1 900
CPP
题解输出:
6 2
求大犇解惑
orz

回复

5 条回复,欢迎继续交流。

正在加载回复...