欧拉计划25之大数加法


题解

#include <stdio.h>


#define swap(a, b) {\
    __typeof(a) temp = a;\
    a = b; b = temp;\
}
int num[2][1005] = {{1, 1}, {1, 1}}, a = 0, b = 1; //定义全局的作用,保证数组初始化元素都为0; 

void big_add(int *a1, int *a2) {
    a2[0] = a1[0];
    for (int i = 1; i <= a2[0]; i++) {
        a2[i] += a1[i];
        if (a2[i] > 9) {
            ++a2[i + 1];
            a2[i] -= 10;
        }
    }
    if (a2[a2[0] + 1]) ++a2[0];
}

int main() {
    
    for (int i = 3; 1; i++) {
        big_add(num[a], num[b]);
        if (num[b][0] == 1000) { //若第i项位数为1000位,则输出该项数 
            printf("%d\n", i);
            break;
        }
        swap(a, b);
    }
    return 0;
}

答案

4782

文章作者: Axieyun
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Axieyun !
评论
评论
  目录