计算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;
}
相关推荐
DuHz15 分钟前
超宽带脉冲无线电(Ultra Wideband Impulse Radio, UWB)简介
论文阅读·算法·汽车·信息与通信·信号处理
Polaris北极星少女35 分钟前
TRSV优化2
算法
代码游侠1 小时前
C语言核心概念复习——网络协议与TCP/IP
linux·运维·服务器·网络·算法
2301_763472462 小时前
C++20概念(Concepts)入门指南
开发语言·c++·算法
阿猿收手吧!2 小时前
【C++】std::promise原理与实战解析
c++
abluckyboy2 小时前
Java 实现求 n 的 n^n 次方的最后一位数字
java·python·算法
园小异2 小时前
2026年技术面试完全指南:从算法到系统设计的实战突破
算法·面试·职场和发展
m0_706653232 小时前
分布式系统安全通信
开发语言·c++·算法
Zach_yuan3 小时前
深入浅出 JSONCpp
linux·服务器·网络·c++
寻寻觅觅☆3 小时前
东华OJ-基础题-104-A == B ?(C++)
开发语言·c++