求10000 以内的阶乘 与 字符串最大跨距

求10000 以内的阶乘

这是大整数运算,用数组存储,逐位计算并存储即可。

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;
vector<int> result;

void sum_n(int n){
    for (int i = 2; i <= n; i++) {
        int carry = 0;
        for (int j = 0; j < result.size(); j++) {
            int product = result[j] * i + carry;
            result[j] = product % 10;
            carry = product / 10;
        }
        // 处理剩余进位
        while (carry > 0) {
            result.push_back(carry % 10);
            carry /= 10;
        }
    }
}

int main() {
    int n;
    cin >> n;
    result.push_back(1);  // 初始为 1
    sum_n(n);
    
    // 输出结果(逆序输出)
    for (int i = result.size() - 1; i >= 0; i--) {
        cout << result[i];
    }
    cout << endl;
    return 0;
}

字符串最大跨距

先存储s,s1,s2 然后在s中查找s1,(若不存在,输出-1)若存在,由于要找最大跨距,反转s2与截去s1后的s,在s中查找s2(返回索引pos2),(若不存在,输出-1)若存在,进行简单计算(s.length() - pos2 - s2.length())并输出索引即为最大跨距。

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;
int main(){
    string S;
    getline(cin,S);
    
    size_t pos1 = S.find(',');
    size_t pos2 = S.find(',',pos1 + 1);
    string s = S.substr(0,pos1);
    string s1 = S.substr(pos1 + 1,pos2 - pos1 - 1);
    string s2 = S.substr(pos2 + 1);
    // cout << s << ' ' << s1 << ' ' << s2 << endl;
    
    if((pos1 = s.find(s1)) != string::npos){//若s中存在s1
        s = s.substr(pos1 + s1.length());//截去s1
        reverse(s.begin(),s.end());//反转剩下的s
        // cout << s << endl;
        reverse(s2.begin(),s2.end());//反转s2
        if((pos2 = s.find(s2)) != string::npos){//若剩下的s中存在s2,在反转后的s中找反转的s2(记录索引值pos2)
            cout << (s.length() - pos2 - s2.length()) << endl;//正向输出最大索引跨距
        }else cout << -1;
    }else cout << -1;
    
    return 0;
}
相关推荐
生锈的键盘1 分钟前
推荐算法实践:交叉特征的理解
算法
小龙报7 分钟前
【51单片机】从 0 到 1 玩转 51 蜂鸣器:分清有源无源,轻松驱动它奏响新年旋律
c语言·数据结构·c++·stm32·单片机·嵌入式硬件·51单片机
dllxhcjla11 分钟前
数据结构和算法
数据结构
乌萨奇也要立志学C++14 分钟前
【洛谷】BFS 求解最短路:从马的遍历到迷宫问题的实战解析
算法·宽度优先
石去皿18 分钟前
【嵌入式就业6】计算机组成原理与操作系统核心机制:夯实底层基础
c++·面试·嵌入式
王老师青少年编程19 分钟前
2024年信奥赛C++提高组csp-s初赛真题及答案解析(完善程序第1题)
c++·题解·真题·初赛·信奥赛·csp-s·提高组
老鼠只爱大米23 分钟前
LeetCode经典算法面试题 #46:全排列(回溯、交换、剪枝等五种实现方案详细解析)
算法·leetcode·剪枝·回溯·全排列·stj算法
Dovis(誓平步青云)37 分钟前
《滑动窗口算法:从 “暴力遍历” 到 “线性高效” 的思维跃迁》
运维·服务器·数据库·算法
一只小小的芙厨1 小时前
AT_tkppc3_d 巨大チェスボード 题解
c++·题解
我在人间贩卖青春1 小时前
C++之继承与派生类的关系
c++·向上造型·向下造型