PTA 天梯赛 L1-006 连续因子 【C++ Vector动态数组(详)】【Python】

C++

知识点:

vector

#include<vector>

一种容器,或者理解为一种“向量”,一般被称为动态数组,其长度可以根据需要改变

定义:vector<储存的类型> 名

也可以定义vector数组 vector<储存的类型> 名[n]  (n为该数组长度)

常用成员函数:

size()//返回返回容器中元素个数

begin()//返回头部迭代器
end()//返回尾部+1迭代器
//通常用于遍历,但是不如下标

rbegin()//返回逆首部迭代器
rend()//返回逆尾部-1迭代器

//通常用于逆序排序eg:
// 使用 sort 对 vector 进行排序,传入逆迭代器作为参数
    sort(vec.rbegin(), vec.rend());

front()//返回首个元素
back()//返回尾部元素

push_back()//在末尾添加一个元素
emplace_back()//和push_back()是一样的作用
pop_back()//弹出最后一个元素

empty()//判断是否为空
insert()//在指定位置插入元素
erase()//在指定位置删除元素
clear()//清空容器

遍历:

1.迭代器遍历,(注意得到的是地址,输出要进行取地址)

//顺序
for(it=v.begin();it!=v.end();it++){
		cout<<*it<<' ';
	} 
//逆序输出
for(it=v.rbegin();it!=v.rend();it++){
		cout<<*it<<' ';
	}

2.下标遍历(常用)

for(int i=0;i<v.size();i++){
		cout<<v[i]<<' ';
	}

3.foreach(简洁)(不支持逆序)

for(int c:v){
		cout<<c<<' ';
	}

排序:

sort(v.begin(),v.end());//排完后输出为升序
sort(v.rbegin(),v.rend());//排完后降序
reverse(v.begin(),v.end());//倒置

本题代码:

#include <iostream>
#include <vector>
#include <cmath>
using namespace std;

// 判断是否为质数
// 1不是质数,2是质数
bool isPrime(int n) {
    if (n <= 1) return false;
    for (int i = 2; i <= sqrt(n); ++i) {
        if (n % i == 0) return false;
    }
    return true;
}

// 求连续因子的个数和最小连续因子序列
void findConsecutiveFactors(int N) {
    // 边界情况:N 为质数
    if (isPrime(N)) {
        cout << "1" << endl;
        cout << N << endl;
        return;
    }
    int maxLength = 0;
    vector<int> factors;
    //定义了一个名为 factors 的向量,其中存储的元素类型为整数 (int)。这个向量将用于存储最小连续因子序列
    // 从 2 开始尝试作为起始因子
    for (int i = 2; i * (i + 1) <= N; ++i) {
        long long product = 1;
        int length = 0;
        for (int j = i; product <= N; ++j) {
            product *= j;
            length++;
            if (N % product == 0 && length > maxLength) {
                maxLength = length;
                factors.clear();
                //清空 factors 向量,以便重新填充新的最小连续因子序列
                for (int k = i; k < i + length; ++k) {
                    factors.push_back(k);
                    //将新的连续因子添加到 factors 向量的末尾
                }
            }
        }
    }
    cout << maxLength << endl;
    for (int i = 0; i < factors.size(); ++i) {
        cout << factors[i];//访问下标输出
        if (i < factors.size() - 1) {
            cout << "*";
        }
    }
    cout << endl;
}

int main() {
    int N;
    cin >> N;
    
    findConsecutiveFactors(N);
    
    return 0;
}

Python

# 连续因子
import math


def isprime(n):
    if 0 < n <= 1:
        return False
    else:
        for f in range(2, int(math.sqrt(n))+1):
            if n % f == 0:
                return False
    return True


N = int(input())
if isprime(N):
    print(1)
    print(N)
else:
    i, max_length = 2, 0
    lst = []
    # 以i为起始因子
    while i * (i + 1) <= N:
        j, length, sum1 = i, 0, 1
        while sum1 < N:
            sum1 *= j
            length += 1
            if N % sum1 == 0 and length > max_length:
                max_length = length
                # 重置列表
                lst = []
                for k in range(i, i + length):
                    lst.append(k)
            j += 1
        i += 1
    print(max_length)
    for i in range(len(lst) - 1):
        print(lst[i], end='*')
    print(lst[len(lst) - 1])

相关推荐

  1. PTA天梯 L2-009 抢红包

    2024-04-21 20:02:02       23 阅读
  2. PTA天梯习题 L2-004 这是二叉搜索树吗?

    2024-04-21 20:02:02       20 阅读
  3. 2021PTA天梯

    2024-04-21 20:02:02       29 阅读
  4. pta L1-076 降价提醒机器人

    2024-04-21 20:02:02       18 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-21 20:02:02       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-21 20:02:02       20 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-21 20:02:02       20 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-21 20:02:02       20 阅读

热门阅读

  1. 给你的 vscode 扩展增加测试设置

    2024-04-21 20:02:02       14 阅读
  2. Golang的[]interface{}为什么不能接收[]int?

    2024-04-21 20:02:02       14 阅读
  3. Python设计模式

    2024-04-21 20:02:02       15 阅读
  4. Qwen量化脚本run_gptq.py解析

    2024-04-21 20:02:02       14 阅读
  5. 【回溯】Leetcode 131. 分割回文串【中等】

    2024-04-21 20:02:02       18 阅读
  6. 【记录一个问题】ubuntu如何显示图形界面

    2024-04-21 20:02:02       15 阅读
  7. python项目练习——29.贪吃蛇

    2024-04-21 20:02:02       16 阅读