给 定 正 整 数 n , 求 数 列 {An} 的 第 N 项 。 数 列 {An} 包 含 正 整 数 集 中 所 有 能 被 7整除的数;还包含正整数集中所有个位上含 7 的数,如 17,27,177。输入 格式 :第一行为正整数 t(≤50),表示数据组数;接下来每行一个正整数 n(≤107)。输出 格式 :对于每个 n,输出数列{An}按从小到大顺序的第 n 项。输入 样例 输出 样例21734375010000
输入样例时什么?提问中没有看到具体的输入。
#include <iostream>
#include <vector>
using namespace std;
vector<int> getList() {
vector<int> v;
for (int i = 1; v.size() < 1000000; i++) {
if (i % 10 == 7 || i % 7 == 0) {
v.push_back(i);
}
}
return v;
}
int main() {
int t;
cin >> t;
vector<int> sequence = getList();
while (t--) {
int n;
cin >> n;
cout << sequence[n-1] << endl;
}
return 0;
}
【以下回答由 GPT 生成】
首先我们需要编写一个函数 is_divisible_by_seven
来判断一个数是否能被7整除。然后,我们需要编写一个函数 contains_seven
来判断一个数的个位是否含有数字7。
接下来,我们可以使用一个循环来生成数列{An}的元素,并将符合条件的元素存储到一个数组中。最后,按照从小到大的顺序输出数组的第n项。
以下是具体的代码实现:
def is_divisible_by_seven(num):
if num % 7 == 0:
return True
else:
return False
def contains_seven(num):
if '7' in str(num):
return True
else:
return False
def get_nth_item(n):
items = []
i = 1
while len(items) < n:
if is_divisible_by_seven(i) or contains_seven(i):
items.append(i)
i += 1
return items[n-1]
t = int(input())
results = []
for _ in range(t):
n = int(input())
results.append(get_nth_item(n))
for result in results:
print(result)
说明:
首先定义了两个函数 is_divisible_by_seven
和 contains_seven
。分别用来判断一个数是否能被7整除和判断一个数的个位是否含有数字7。
然后定义了一个 get_nth_item
函数,用来生成数列{An}的元素并存储到一个数组中。循环中,如果当前的数能被7整除或者个位含有数字7,则将其添加到数组中。最后返回数组的第n项。
然后,通过读取输入的t值来确定需要处理的组数。之后,使用一个循环来读取每个n,并调用 get_nth_item
函数来获得数列{An}的第n项。将结果存储到一个结果数组中。
最后,遍历结果数组并输出每个结果。
【相关推荐】