题目描述:
思路:
对题目提供的公式进行数学处理再机械执行
该题的公式若直接执行,在n的数值较大时会有巨大的计算量,故先对公式进行数学上的处理,由于lcm的取值与gcd相关,所以先对lcm进行操作。
lcm(i,j)意为i和j的最小公倍数,由最大公约数的定义可得i与j除以共同的最大公约数后,剩下的两个数最大公约数为1即互质,那么i与j的最小公倍数就是(i/gcd(i,j))*(j/gcd(i,j))*gcd,化简后就是(i*j)/gcd(i,j)。故lcm(i,j)*gcd(i,j)/i=j。
此时里的内容已经化简为一个j,那么整个
就可以看作是i的阶层,i!/i!=1,求和号的每一项就可以看作是1,n项相加即为n,所以题目的最终答案就是
/*G*/
#include<cstdio>
#include<iostream>
using namespace std;
long long n;
int main()
{
cin>>n;
cout<<n;
return 0;
}