首页 > 其他分享 >P1255洛谷

P1255洛谷

时间:2024-06-18 21:01:35浏览次数:17  
标签:P1255 洛谷 int cnt len -- BigInt return

#include<bits/stdc++.h>
#include<math.h>
#include<cmath>
using namespace std;
const int maxn=5050;
struct BigInt{
    int a[maxn];
    int len;

    BigInt(){ len=1; memset(a,0,sizeof a); }

    BigInt(char *s){
        len=strlen(s);
        int cnt=0;
        for(int i=len-1;i>=0;i--) a[cnt++]=s[i]-'0';
    }
    int &operator[](int i){return a[i];}
    BigInt(string s){
        len=s.size();
        int cnt=0;
        for(int i=len-1;i>=0;i--) a[cnt++]=s[i]-'0';
    }

    BigInt& operator = (const BigInt &T){
        len=T.len;
        memset(a,0,sizeof(a));
        for(int i=0;i<len;i++)
            a[i]=T.a[i];
        return *this;
    }
    
    void println(){
        for(int i=len-1;i>=0;i--) printf("%d",a[i]);
        puts("");
    }
    
    void print(){
        for(int i=len-1;i>=0;i--) printf("%d",a[i]);
    }
    void flatten(int L){
        len = L;
        for(int i=0;i<len;i++)
            a[i+1]+=a[i]/10,a[i]%=10;
            for(;len>1&&!a[len-1];)
                len--;
    }    
};
BigInt operator+(BigInt &a,BigInt &b){
    BigInt c;
    int len = max(a.len,b.len);
    for(int i=0;i<len;i++)
        c[i]+=a[i]+b[i];
        c.flatten(len + 1);
    return c;
}
BigInt f[5010];
int main() {
    int n;
    cin>>n;
    f[1]=BigInt("1");
    f[2]=BigInt("2");
    for(int i=3;i<=n;i++){
        f[i]=f[i-2]+f[i-1];
    }
    f[n].print();
    return 0;
}
 

标签:P1255,洛谷,int,cnt,len,--,BigInt,return
From: https://blog.csdn.net/jshdadn/article/details/139755940

相关文章

  • 洛谷 B3867 [GESP202309 三级] 小杨的储蓄 题解
     题目题目-[GESP202309三级]小杨的储蓄-洛谷题目描述小杨共有 ......
  • 洛谷 P1122 最大子树和
    题目链接:最大子树和思路    由于可以无限剪枝,所以假设以节点1为根,并删去所有美丽质数小于0的子树,又考虑到可能会出现根节点为负数,导致可能会只留下子树而把节点1为根节点的其他部分扔掉,所以需要dp数组记录,dp[i]为以节点i为根节点能得到的最大的美丽指数,贪心将节点i的子......
  • 洛谷 P1162 填涂颜色
    题目链接:填涂颜色思路代码#include<bits/stdc++.h>usingnamespacestd;constintN=30+10;#definelllonglongintmp[N][N],dir[5][2]={{1,0},{0,1},{-1,0},{0,-1}},n;boolvis[N][N];boolcheck(intx,inty){returnx>=......
  • 洛谷 P1216 数字三角形
    题目链接:数字三角形思路    dp:金字塔顶的元素为起点,金字塔每行的最左侧数字只能从上一层的最左侧数字到达,如7->3->8->2->4,这些数字中的每一个(除起点7外)都只能从上一层的最左侧数字到达,递推公式为dp[i][1]=max(dp[i][1],num[i][1]+dp[i-1][1],最右侧数字......
  • 洛谷 P4343 自动刷题机
    题目链接:自动刷题机思路    二分典题,两个二分判断出可能的最大值和最小值。需要注意当删掉y行代码后,当前代码行数小于0时需要将代码行数重新赋值为0,然后需要注意二分的n最大值的边界,因为x[i]的最大值为1e9,日志最多有1e5行,所以考虑极限情况,日志每一行都是写了1e9行代码,......
  • 洛谷 P1226 快速幂
    题目链接:快速幂思路    简单快速幂模板。a^17=(a^2)^8*a,此时pow()中的y就可以视为17->8(y>>=1),pow()中的x就是底数a->a^2(x*=x),结果res可以视为在循环时多出来的后边乘的a,1->a(res*=x),简单代数推导就会发现y=1的时候,会有res*=x此时的x为a^16,则......
  • 洛谷 P5595 歌唱比赛
    题目链接:歌唱比赛思路    根据题目分析可得,假如小x的点赞数是123111,小y的点赞数是234111,则字符串的第4为到第6位结果都为Z,分别为对比(111,111),(11,11),(1,1),字符串的第三位为Y,为对比(3111,4111),则结果字符串为YYYZZZ。    此时可以轻易判断出字符串中第一个Z后面的所有字母......
  • 洛谷P8807 [蓝桥杯 2022 国 C] 取模
    题目:解读(思路与分析):题目总结:对于给定的整数n和范围m,要找到两个不同的x和y,它们除以n后的余数相等。思路:对于每组给出的n,m询问,可以通过遍历范围从1到m的所有可能的j,并计算n对j取模的余数。使用一个集合来存储已经出现过的余数,如果当前余数已经存在于集......
  • 洛谷 P2015 二叉苹果树
    题目链接:二叉苹果树思路    本题使用链式向前星存储树上的边,然后DFS搜索+简单dp。    dp数组,dp[i][j]表示节点i及其子树保留k根树枝得到的最大苹果数。son数组存储当前节点的孩子节点的编号和当前节点与孩子节点之间的树枝上的苹果个数。    对于dp递......
  • 洛谷 P1352 没有上司的舞会
    题目链接:没有上司的舞会思路题解#include<bits/stdc++.h>usingnamespacestd;#definelllonglongconstintN=1e5+10;intdp[N][2],happy[N],subordinate[N],cnt,head[N],nex[N],edge[N];//链式向前星存储边voidadd(intx,inty){nex[++cnt]=......