数字长廊,小明来到了一个数字长廓

数字长廊
描述

小明来到了一个长廊,发现墙壁上写了一些数字,有1 4 9 16 25,小明简单的思考了一下就找到了规律,这些数都是他在这个数字长廊中所在位置数的平方。在参观的过程中他发现,有的数字被扣掉了,现在请你根据小明找到的规律,帮助小明补上这些数字,并输出缺失的数字以及这个数字在长廊中应该在的位置,缺失的数字不可能在最后一位,题目保证数据不会重复。

day07-01.zip

输入
第一行一个整数n(n<=10000)表示已有的数字个数

第二行有n个数,表示墙壁上的数字a(a<10^10);

输出
两行:分别表示缺失的数字以及数字所在的位置

输入样例 1

5
1 9 16 25 36
输出样例 1

4
2
输入样例 2

5
4 16 25 36 49
输出样例 2

1 9
1 3

#include <iostream>
#include <vector>
using namespace std;

int main()
{
    vector<int> vec;
    int n;
    cin >> n;
    int j = 1;
    for (int i = 0; i < n; i++)
    {

        int x;
        cin >> x;
        while (j * j < x)
        {
            vec.push_back(j);
            j++;
        }
        j++;
    }
    for (int i = 0; i < vec.size(); i++)
    {
        cout << vec[i] * vec[i];
        if (i != vec.size() - 1)
        {
            cout << " ";
        }
        else
        {
            cout << endl;
        }
    }
    for (int i = 0; i < vec.size(); i++)
    {
        cout << vec[i];
        if (i != vec.size() - 1)
        {
            cout << " ";
        }
    }    
}

img

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632

【以下回答由 GPT 生成】

from typing import List, Tuple

def find_missing_numbers(n: int, numbers: List[int]) -> List[Tuple[int, int]]:
    missing_numbers = []
    for i, num in enumerate(numbers, start=1):
        if i == 1:
            continue
        elif num - numbers[i-2] != i*i - (i-1)*(i-1):
            missing_num = i * i - (i-1) * (i-1) + numbers[i-2]
            missing_position = i
            missing_numbers.append((missing_num, missing_position))
    return missing_numbers

使用示例:

n = 5
numbers = [1, 9, 16, 25, 36]
missing_numbers = find_missing_numbers(n, numbers)
for missing_num, missing_position in missing_numbers:
    print(f"{missing_num} {missing_position}")

输出:

4 2


【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^