大整数模乘c代码

这是一个示例代码,用于在 C 语言中模拟大整数乘法:

``` #include <stdio.h> #include <stdlib.h> #include <string.h>

#define MAX_DIGITS 200 // 最大位数

// 大整数结构体 typedef struct { int digits[MAX_DIGITS]; // 每一位上的数字 int size; // 大整数的位数 } bignum_t;

// 初始化大整数 void bignum_init(bignum_t *n) { memset(n->digits, 0, sizeof(int) * MAX_DIGITS); n->size = 1; }

// 读入大整数 void bignum_read(bignum_t *n, char *s) { int len = strlen(s), i; bignum_init(n); for (i = 0; i < len; i++) { n->digits[i] = s[len - i - 1] - '0'; } n->size = len; }

// 大整数乘法 void bignum_multiply(bignum_t *a, bignum_t *b, bignum_t *c) { int i, j; bignum_init(c); for (i = 0; i < a->size; i++) { for (j = 0; j < b->size; j++) { c->digits[i + j] += a->digits[i] * b->digits[j]; c->digits[i + j + 1] += c->digits[i + j] / 10; c->digits[i + j] %= 10; } } c->size = a->size + b->size; while (c->digits[c->size - 1] == 0 && c->size > 1) { c->size--; } }

// 输出大整数 void bignum_print(bignum_t *n) { int i; for (i = n->size - 1; i >= 0; i--) { printf("%d", n->digits[i]); } printf("\n"); }

int main() { bignum_t a, b, c; char s[MAX_DIGITS]; while (scanf("%s", s) == 1) { bignum_read(&a, s); scanf("%s", s); bignum_read(&b, s); bignum_multiply(&a, &b, &c); bignum_print(&c); } return 0; } ``

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值