2022 年第四届齐鲁工业大学(山东省科学院)与山东师范大学ICPC 大学生程序设计竞赛 G题题解

题目描述

思路

对题目提供的公式进行数学处理再机械执行

该题的公式若直接执行,在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。

此时\prod i,j=1里的内容已经化简为一个j,那么整个\prod i,j=1就可以看作是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;
}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值