计算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;
}
相关推荐
小小编程路10 分钟前
C++ 异常 完整讲解
开发语言·c++
一只齐刘海的猫2 小时前
【Leetcode】找到字符串中所有字母异位词
算法·leetcode·职场和发展
海清河晏1113 小时前
数据结构 | 八大排序
数据结构·算法·排序算法
Frank学习路上3 小时前
【C++】面试:关键字与语法特性
c++·面试
liulilittle3 小时前
固定数组时间轮的槽过载优化:桶链表与批次执行
网络·数据结构·链表
IronMurphy4 小时前
【算法五十七】146. LRU 缓存
算法·缓存
Irissgwe4 小时前
数据结构-栈和队列
数据结构·c++·c·栈和队列
两片空白4 小时前
数据容器集合set/frozenset
数据结构
凌波粒4 小时前
LeetCode--108.将有序数组转换为二叉搜索树(二叉树)
算法·leetcode·职场和发展
liulilittle4 小时前
KCC:在 BBR 思路上的一次探索
网络·tcp/ip·算法·bbr·通信·拥塞控制·kcc