链接:https://ac.nowcoder.com/acm/contest/16172/E
来源:牛客网
找规律
将正整数按以下规律排列:
设 n 在第 i 行第 j 列,请输出 i 和 j 的最小公倍数。
输入描述:
输入一个正整数 n (1<=n<=20210507)。
输出描述:
输出一个正整数,表示 i 和 j 的最小公倍数。
示例1
输入
2
输出
2
可观察到奇数只在奇数行,偶数只在偶数行,第n行有n个数
#include<iostream>
using namespace std;
typedef long long ll;
const int INF=0x3f3f3f3f;
const int MAX_N=1e3;
int gcd(int a,int b){
int s,m,n;
m=a,n=b;
while(n){
s=m%n; m=n; n=s;
}
return m;
}
int main(){
int n;
while(cin>>n){
int i,j;
if(n%2==1) i=1;
else i=2;
//第num个奇数或偶数
int num=(n+1)/2;
while(num>i){
num-=i;
i+=2;
}
j=num;
// cout<<i<<' '<<j<<'\n';
cout<<i*j/gcd(i,j)<<'\n';
}
return 0;
}