zoukankan      html  css  js  c++  java
  • 二刷斐波那契高精度

    #include<bits/stdc++.h>
    
    using namespace std;
    
    struct bign{
        int d[10000];
        int len;
        bign(){
            memset(d,0,sizeof(d));
            len = 0;
        }
    };
    
    //字符串转到大数中
    bign change(char *s){
        bign a;
        a.len = strlen(s);
        for(int i=0; i<a.len; i++){
            a.d[i] = s[a.len - 1 - i] - '0';
        }
        return a;
    }
    //两个大数相加 
    bign add(bign v1, bign v2){
        bign c;
        int carry = 0;//进位
        for(int i=0; i<v1.len || i<v2.len; i++){
            int temp = v1.d[i] + v2.d[i] + carry;
            c.d[c.len++] = temp % 10;
            carry = temp / 10;
        }
        if(carry != 0){
            c.d[c.len++] = carry;
        }
        return c;
    }
    
    int main(){
        int n;
        scanf("%d",&n);
        if(n == 0){
            puts("0");
            return 0;
        }
        if(n == 1){
            puts("1");
            return 0;
        }
        if(n == 2){
            puts("2");
            return 0;
        }
        char s1[10000];
        char s2[10000];
        char s3[10000];
        strcpy(s1,"1");
        strcpy(s2,"2");
        int cnt;
        for(int i=3; i<=n; i++){
            bign v1 = change(s1);
            bign v2 = change(s2);
            bign v3 = add(v1,v2);
            for(int i=v3.len - 1,cnt = 0; i>=0; i--,cnt++){
                s3[cnt] = v3.d[i] + '0';
            }
            strcpy(s1,s2);
            strcpy(s2,s3);
        }
        puts(s2);
        return 0;    
    } 
  • 相关阅读:
    js:鼠标事件
    js:argument
    js:|| 和 && 运算符 特殊用法
    css:选择器
    css:清除浮动 overflow
    jquery:after append appendTo三个函数的区别
    WIndow Document
    css:颜色名和十六进制数值
    安装centos出错
    Leetcode | Unique Paths I & II
  • 原文地址:https://www.cnblogs.com/zhangqiling/p/12309755.html
Copyright © 2011-2022 走看看