GESP二级 - 姐妹数对算法详解及代码实现
GESP二级 - 姐妹数对算法详解及代码实现
题目描述
给定两个不同的正整数x,y,若x+y能被3除尽或能被7除尽,则称x,y为姐妹数对。例如:
- 2,4;2,5;为姐妹数对。
- 3,14; 不是姐妹数对。
那么,对给出的一个整数n(1≤n≤100), 1,2,…,n之间有多少个姐妹数对。
输入描述
一个整数n
输出描述
一个整数,即1~n之间姐妹数对的个数。
用例输入 1
6 用例输出 1
8
解题思路
根据题目要求,我们需要判断1~n之间的数是否是姐妹数对。可以使用循环遍历的方式,从1开始到n,依次判断每个数是否是姐妹数对。
具体步骤如下:
- 定义一个变量count,用于记录姐妹数对的个数,初始值为0。
- 使用一个循环,从1遍历到n。
- 在循环中,判断当前数是否满足姐妹数对的条件:能被3整除或能被7整除。
- 如果满足条件,将count加1。
- 循环结束后,输出count的值作为结果。
代码实现如下:
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
int count = 0;
for (int i = 1; i <= n; i++) {
if (i % 3 == 0 || i % 7 == 0) {
count++;
}
}
cout << count << endl;
return 0;
}
复杂度分析:
该算法使用了一个循环来遍历1到n,时间复杂度为O(n)。同时只使用了常数个变量,空间复杂度为O(1)。因此,该算法的时间复杂度为O(n),空间复杂度为O(1)。
原文地址: http://www.cveoy.top/t/topic/fNzs 著作权归作者所有。请勿转载和采集!