牛客小白月赛73

108 阅读1分钟

首先说明一下,这次小白月赛的前两道题很简单,基本上直接输出即可。

A - 最小的数字

题目链接

题目描述

给出一个整数 n(0n109)n(0≤n≤10^9),求最小的整数 x,满足 xnx≥n 且 x 是 3 的倍数。

输入描述:

仅输入一行,包含一个整数 n(0n109)n(0≤n≤10^9)

输出描述:

仅输出一行,包含一个整数 x,表示答案。

示例1

输入

1

输出

3

示例2

输入

3

输出

3

解题思路

这道题算是签到题,最直接的办法就是直接从n开始枚举,并输出第一个能被3整除的数即可。

AC代码

#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
#include<map>
#include<cmath>
using namespace std;
#define int long long
#define endl '\n'
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
​
const int N = 2010;
​
signed main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    
    int n;
    cin >> n;
    for (int i = n;; i++)
    {
        if (i % 3 == 0)
        {
            cout << i;
            break;
        }
    }
    return 0;
}

B - 优美的GCD

题目链接

题目描述

给出一个整数n(1n106) n(1≤n≤10^6),请求出两个整数 x,y满足如下条件:

  • xyx≠y
  • 1x109,1y1091≤x≤10^9,1≤y≤10^9
  • gcd(x,y)=ngcd(x,y)gcd⁡(x,y)=n gcd⁡(x,y)代表 x 和 y 的最大公约数。

如果有多个可行的答案,请输出任意一个。

输入描述:

第一行包含一个整数 T(1T105)T(1≤T≤10^5),表示测试用例的组数。

对于每组测试用例:

仅输入一行,包含一个正整数 n(1n106)n(1≤n≤10^6)

输出描述:

对于每组测试用例:

仅输出一行,包含两个正整数 x,y。如果有多个可行的答案,请输出任意一个。

输入

2
3
2

输出

9 6
100 102

解题思路

这道题也不难,不要看到gcd(x,y)就害怕。实际上就是让我们输出两个不相同的数,但他们之间的差为若干倍的n。

比如:n=5,我们就可以输出 5 10 或 5 15 等等。

代码就很简单了,输入n后直接输出n和n的整数被即可。

AC代码

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
#define int long long
#define endl '\n'
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
​
const int N = 2010;
​
int gcd(int a, int b)
{
    return a % b == 0 ? b : gcd(b, a % b);
}
signed main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    
    int t;
    cin >> t;
    while (t--)
    {
        int n;
        cin >> n;
        cout<<n<<" "<<2 * n<<endl;
    }
    return 0;
}