数字长廊
描述
小明来到了一个长廊,发现墙壁上写了一些数字,有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 << " ";
}
}
}
【以下回答由 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
【相关推荐】