"설명"루오 밸리 P5436 XR-2 [운명]

문제 포털

portal1을 : Luogu

기술

선은 그와 그의 주인 사이의 크기의 운명을 알고 싶어요. 그러나 우리는 그것을 어떻게 알 수 있습니까?

방법, 자신의 첫 번째 마스터 계약과 양의 정수의 선 사상 \ (n \)는 , 그들은 각각 심장보다 더 싶지 \ (n \) 양의 정수.

선종 생각하고, 더 큰 그의 마스터는 두 수의 최소 공배수, 그것은 그와 그의 주인의 운명이 더 큰 의미 생각했다.

마스터는이 방법이 적절하다고 느낀다, 그러나 그는 최대 두 숫자의 최소 공배수 인 것 알고 싶어한다.

수학의 마스터는 매우 좋지 않다, 그래서 그는 젠 물었다. 선종 또한 그가 당신이 그에게 답을 말해 싶어,이 질문은 매우 어려운 일이라고 생각합니다.

입력

양의 정수의 첫 줄 \ (T \)는 , 데이터 세트의 수를 나타낸다.

다음 \ (T \) 라인, 각각의 양의 정수 \ (\ N-는) , 양의 정수를 나타내고 마스터는 선을 동의했다.

산출

데이터의 각 세트, 선 답을 나타내는 양의 정수하십시오.

샘플 입력

1
3

샘플 출력

6

해결책

먼저 \ (\ GCD (X, X -.. 1) 1 = \) 이므로 \ N- (\) 의 최대의 최소 공배수의 범위이어야에 \ (\ mathrm {LCM} ( N, N - 1) = N \ 타임스합니다 (N-- 1) \) , 다음 대답은 \합니다 (N- \ 타임스합니다 (N-- 1) \) .

특히 때 \ (N = 1 \) 하면 때문에 \ (N--. 1 = 0 \) , 최대가되도록 만 \ (\ mathrm} {LCM. (1 ,. 1) =. 1 \) .

암호

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cmath>

using namespace std;

typedef long long LL;
int T;
LL n;
int main() {
    scanf("%d", &T);
    while (T--) {
        scanf("%lld", &n);//考虑到后面还需相乘,会爆int
        if (n != 1) printf("%lld\n", n * (n - 1)); else printf("1\n");//特判
    }
    return 0;
}

추천

출처www.cnblogs.com/shenxiaohuang/p/11221074.html