我们如何编写代码来找到以下解决方案: (N+1)*X =LCM( 1,2,3,4,5,6,......,N,N+1) 使用 mod 当它变得大于 (10^9 +7) 。使用 MOD=(10^9 +7)。我写了以下代码片段,但它不起作用:
ll dp[100005];
ll gcd (ll a,ll b)
{
if (b == 0)
return a;
else
return gcd (b, a % b);
}
void extend_euclid(int a,int b,int &x,int &y)
{
if(a==0)
{
x=0;y=1;
return;
}
int x1,y1;
extend_euclid(b%a,a,x1,y1);
x=y1-(b/a)*x1;
y=x1;
}
void init()
{
dp[1]=1;
for(ll i=2;i<100002;i++)
{
ll x,y;
x=dp[i-1]*i;
x=x%mod;
y=gcd(i,dp[i-1]);
y=y%mod;
int z1,z2;
extend_euclid(y,mod,z1,z2);
y=(z1+mod)%mod;
dp[i]=(y*x)%mod;
}
}