计算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;
}
相关推荐
吞下星星的少年·-·2 小时前
Div.3 CF 1131A题(排序,模拟)
算法·模拟·排序
aichitang20242 小时前
代数拓扑学与现代前沿视角
考研·算法·数学建模·ai·拓扑学·高考
樱花树下的数学喵3 小时前
手写简易 STL string|C++ 字符串底层实现
开发语言·c++
二本咕咕-机械转码3 小时前
FreeRTOS深入解析(一)_链表与并发保护——哨兵循环链表、排序键游标、临界区与关调度
单片机·算法·链表
AI吃大瓜3 小时前
指针压力表读数3:C/C++实现指针压力表读数(可实时检测)
c++·指针读数·指针压力表·压力表自动读数·压力表读数
-银雾鸢尾-3 小时前
两数之和-C++实现
c++·算法
j7~3 小时前
【动态规划算法专题】动态规划五部曲实战:泰波那契数、三步问题、最小花费爬楼梯
c++·算法·动态规划·数据结构与算法
jimy13 小时前
C++ 报错的 qualifiers 的意思
开发语言·c++
倍利福猎头公司官方账号3 小时前
大企业HR如何向猎头公司清晰传达AI岗位的技术需求?
人工智能·算法·机器人·求职招聘·业界资讯