• 10.28T2 打表


    #3865 A+B 问题

    描述

    连续几次考试太难了,都要求出一道简单题。老师想,最简单的题肯定是a+b 啊,但当老师出完数据后发现输入数据.in没了,只有输出答案数据.out了。咋办呢,就把输出当输入,改一下题吧。请输出使得和为n的两个数a,b 的最小公倍数尽可能大的数值。

    输入

    输入文件的第一行一个整数T 表示数据组数。

    接下来T行每行一个整数n ,表示.out中的数值,即a+b=n 。

    输出

    共T行,每行一个整数表示最大的最小公倍数的值

    样例输入[复制]
    3
    2
    3
    4
    样例输出[复制]
    1
    2
    3
    提示

    【数据范围】

    30%的数据满足 T<=10,n<=1000

    100% 的数据满足T<=10000 ,n<=10^9

    打表发现一定两个数字是互质的

    所以我们要找相邻最近的一对互质数

    发现对于奇数直接拆成n/2和n/2+1两个数字

    如果能被4整除显然是
    n/2+1和n/2-1

    如果只是2倍数非4倍数的话就是n/2-2和n/2+2

    乘上去就可以了

    code:

     1 #include<iostream>
     2 #include<cstdio>
     3 using namespace std;
     4 signed main(){
     5     long long T;
     6     cin>>T;
     7     while(T--){
     8         long long n;
     9         cin>>n;
    10         if(n==2)cout<<1<<'
    ';
    11         else if(n==1)cout<<0<<'
    ';
    12         else if(n%2==1)cout<<(n/2)*(n/2+1)<<'
    ';
    13         else if(n%4==0)cout<<(n/2-1)*(n/2+1)<<'
    ';
    14         else cout<<(n/2-2)*(n/2+2)<<'
    ';
    15     }
    16 }

    over

  • 相关阅读:
    算法_2022_分类
    算法_2022_时间&空间复杂度
    JWT详解
    LDAP是什么?
    Bootstrap Blazor 开源UI库介绍Table 虚拟滚动行
    .Net Core 配置文件读取 IOptions、IOptionsMonitor、IOptionsSnapshot
    .NET 7 来了!!!
    git 配置提交模板
    .NET 反向代理YARP 部署Https(SSL)
    .NET 反向代理YARP
  • 原文地址:https://www.cnblogs.com/saionjisekai/p/9864935.html
Copyright © 2020-2023  润新知