计算2的N次方 和 大整数的因子

计算2的N次方

用数组存储大整数,每一位存储一个数字(0-9),然后进行 N 次乘以 2 的操作。

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

int main() {
    int N;
    cin >> N;
    
    // 2^0 = 1,初始值
    int num[100] = {1};  // 存储结果的每一位(逆序存储,个位在num[0])
    int len = 1;         // 当前数字的长度
    
    // 进行 N 次乘以 2 的操作
    for (int i = 0; i < N; i++) {
        int carry = 0;  // 进位
        
        // 每一位都乘以 2
        for (int j = 0; j < len; j++) {
            int product = num[j] * 2 + carry;
            num[j] = product % 10;  // 当前位的值
            carry = product / 10;   // 进位
        }
        
        // 处理最后的进位
        while (carry > 0) {
            num[len] = carry % 10;
            carry /= 10;
            len++;
        }
    }
    
    // 输出结果(逆序输出)
    for (int i = len - 1; i >= 0; i--) {
        cout << num[i];
    }
    cout << endl;
    
    return 0;
}

大整数的因子

这个问题需要判断一个大整数(最多30位)能否被 2-9 中的某个数整除。因为 c 可能很大,我们需要用字符串读取这个数,然后分别判断整除性。

由于 c 最多有 30 位,无法用普通整数类型存储,所以:

  1. 将 c 作为字符串读入

  2. 对每个 k (2 ≤ k ≤ 9),判断 c 是否能被 k 整除

  3. 使用大整数除法取余的方法来判断整除性

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

int main() {
    string c;
    cin >> c;
    
    bool found = false;  // 是否找到符合条件的 k
    
    // 检查 k 从 2 到 9
    for (int k = 2; k <= 9; k++) {
        int remainder = 0;
        
        // 模拟大整数除以 k 的过程
        for (char digit : c) {
            int num = digit - '0';
            remainder = (remainder * 10 + num) % k;
        }
        
        // 如果余数为 0,说明能整除
        if (remainder == 0) {
            if (found) {
                cout << " ";  // 不是第一个数,输出空格
            }
            cout << k;
            found = true;
        }
    }
    
    if (!found) {
        cout << "none";
    }
    cout << endl;
    
    return 0;
}
相关推荐
仰泳的熊猫1 小时前
题目2570:蓝桥杯2020年第十一届省赛真题-成绩分析
数据结构·c++·算法·蓝桥杯
无极低码4 小时前
ecGlypher新手安装分步指南(标准化流程)
人工智能·算法·自然语言处理·大模型·rag
软件算法开发5 小时前
基于海象优化算法的LSTM网络模型(WOA-LSTM)的一维时间序列预测matlab仿真
算法·matlab·lstm·一维时间序列预测·woa-lstm·海象优化
Thera7775 小时前
C++ 高性能时间轮定时器:从单例设计到 Linux timerfd 深度优化
linux·开发语言·c++
罗超驿5 小时前
独立实现双向链表_LinkedList
java·数据结构·链表·linkedlist
superior tigre5 小时前
22 括号生成
算法·深度优先
君义_noip6 小时前
信息学奥赛一本通 1952:【10NOIP普及组】三国游戏 | 洛谷 P1199 [NOIP 2010 普及组] 三国游戏
c++·信息学奥赛·csp-s
努力也学不会java7 小时前
【缓存算法】一篇文章带你彻底搞懂面试高频题LRU/LFU
java·数据结构·人工智能·算法·缓存·面试
旖-旎7 小时前
二分查找(x的平方根)(4)
c++·算法·二分查找·力扣·双指针