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,依次判断每个数是否是姐妹数对。

具体步骤如下:

  1. 定义一个变量count,用于记录姐妹数对的个数,初始值为0。
  2. 使用一个循环,从1遍历到n。
  3. 在循环中,判断当前数是否满足姐妹数对的条件:能被3整除或能被7整除。
  4. 如果满足条件,将count加1。
  5. 循环结束后,输出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)。

GESP二级 - 姐妹数对算法详解及代码实现

原文地址: http://www.cveoy.top/t/topic/fNzs 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录