【XR-2】缘分
[题目链接]https://www.luogu.com.cn/problem/P5436?contestId=147354
题意
输入一个数,两人心里分别想的一个数,要使这两个数的最小公倍数最大。
思路
- x一般情况,n不等于1:要想要最小公倍数最大,一定是最大的两位数。
//而相邻的两位数的最小公倍数一定是这两个数之积。so:n*(n-1)- 要想要最小公倍数最大,一定是最大的两位数。
- 而在n个数中,最大的两位数一定是n和n-1。而相邻的两位数的最小公倍数一定是这两个数之积。so:n*(n-1)
坑点
- 根据题目要求,10e9应该用long long int ,不然会爆
- 特殊情况:当n=1时,n-1=0,所以最大只能是lcm(1,1)=1,最小公倍数只能是1 。
算法一:签到题,数学,循环判断
实现步骤
- 输入数,表示数组范围,循环输入
- 考虑特殊情况n=1;
- 一般情况,n不等于一;
代码
#include<iostream>
#include<stdio.h>
using namespace std;
int main()
{
int t;
cin>>t;//输入一个数,表示数组
while(t--)
{
long long int n;//根据题目要求,10e9应该用long long int ,不然会爆
cin>>n;//将数循环输入
if(n==1)
{
cout<<1<<endl;//特殊情况:当n=1时,n-1=0,所以最大只能是lcm(1,1)=1,最小公倍数只能是1
}
else
{
cout<<n*(n-1)<<endl;
}
}
return 0;//终止程序
}
总结
要读懂题目,学会运用数学思维解决问题。