正经解题思路但是没AK(怒
原题链接:29433.智慧数2024-10-26 16:34:37
发布于:湖南
这个智慧数的定义不难发现其实就是两个完全平方数的差
然后要我们找在区间内所有不合法(如上条件)的数
比如一个数是智慧数,当且仅当存在两个整数和使得
如果你在初一的时候也学习了平方差公式,那么你可以知道
所以必须是两个整数的乘积
然后可以遍历所有可能的和来生成所有可能的智慧数,直到
将生成的智慧数标记出来,剩下的数就是非智慧数
比如在区间内,智慧数有其中不是智慧数的数只有和
或者:
设
当,为整数时,若,同奇或同偶,则与均为偶数,所以是4的倍数
若,一奇一偶,则与均为奇数,所以是奇数
所以智慧数也可以表示为奇数或者4的倍数
非智慧数就是既不是奇数也不是4的倍数的数,也就是形如的数
对于给定的,遍历中的每个数。
对于每个数,判断它是否为智慧数。根据智慧数的规律,可以通过判断除以的余数来确定它是否为智慧数。如果是奇数或者能被整除,那么它就是智慧数;如果除以余数为,那么它就不是智慧数
python code(OLE版))乐了大帅童TM造的什么数据自己都过不了:
n = int(input())
n_num = []
count = 0
for i in range(1, n+1):
if i%4 == 2:
n_num.append(i)
count += 1
print(count)
for num in n_num:
print(num, end=' ')
c++ code(RE版)经测试这题最多最多绿5个点(至少在现在):
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> n_num;
int count = 0;
for (int i = 1; i <= n; ++i) {
if (i % 4 == 2) {
n_num.push_back(i);
count += 1;
}
}
cout << count << endl;
for (int num : n_num) {
cout << num << " ";
}
return 0;
}
全部评论 1
这题主要是OLE测试,不是用来做的
2024-10-26 来自 广东
1(因为我只放了checker输出数据一个都没放
2024-10-26 来自 广东
0草草草,白写了
2024-10-26 来自 湖南
0哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
2024-10-26 来自 广东
0
有帮助,赞一个