zoukankan      html  css  js  c++  java
  • HDU 1715 大菲波数

    题目链接http://acm.hdu.edu.cn/showproblem.php?pid=1715

    MS我写的比较麻烦,各种进位什么的,学长说用递归加打表就可以搞定。

    我的

    View Code
     1 #include<stdio.h>
     2 #include<string.h>
     3 #define max 1000
     4 char n1[max],n2[max],n3[max];
     5 void add(char *n1,char *n2,char *n3)
     6 {
     7     memset(n3,0,max);
     8     int len=strlen(n1);
     9     int i;
    10     for(i=0;i<len;i++)
    11     {
    12         n3[i]=n1[i]-'0'+n2[i]-'0'+n3[i];
    13         if(n3[i]>=10)
    14         {
    15             n3[i]=n3[i]-10+'0';
    16             n3[i+1]=1;
    17         }
    18         else n3[i]+='0';
    19     }
    20     if(n2[i]!=0)n3[i]=n2[i]+n3[i];
    21     else if(n3[i]!=0) n3[i]+='0';
    22 
    23 }
    24 void prn(char *p)
    25 {
    26     int i=strlen(p)-1;
    27         for(;i>=0;i--)
    28         {
    29             printf("%c",p[i]);
    30         }
    31         printf("\n");
    32 }
    33 int main()
    34 {
    35     int i,n,t;
    36     scanf("%d",&n);
    37     while(n--)
    38     {
    39         scanf("%d",&t);
    40         if(t==1||t==2)
    41         {
    42             printf("1\n");
    43             continue;
    44         }
    45         memset(n1,0,max);
    46         n1[0]='1';
    47         memset(n2,0,max);
    48         n2[0]='1';
    49         for(i=3;i<=t;i++)
    50         {
    51             add(n1,n2,n3);
    52             strcpy(n1,n2);
    53             strcpy(n2,n3);
    54         }
    55         prn(n3);
    56     }
    57     return 0;
    58 }

    学长的

    View Code
     1 const int N = 1007;
     2 int f[N][217];
     3 int main() {
     4     int i, j;
     5     f[1][0] = f[2][0] = 1;
     6     for(i = 3; i < N; i++) {
     7         for(j = 0; j <= 210; j++)
     8             f[i][j] = f[i-1][j]+f[i-2][j];
     9         int flag = 0;
    10         for(j = 0; j <= 210; j++) {
    11             int tmp = f[i][j] + flag;
    12             flag = tmp/10;
    13             f[i][j] = tmp%10;
    14         }
    15     }
    16     //freopen("data.in", "r", stdin);
    17     int n, pi;
    18     cin >> n;
    19     while(n--) {
    20         cin >> pi;
    21         i = 210;
    22         while(f[pi][i] == 0)
    23             i--;
    24         for(;i >= 0; i--)
    25             printf("%d", f[pi][i]);
    26         printf("\n");
    27     }
    28     return 0;
    29 }
  • 相关阅读:
    深度谈谈单例模式
    高并发的下的数据库设计
    D3开发中的资料整理
    IIS配置过程中的常见问题
    css3常用动画+动画库
    非常实用的10款网站数据实时分析工具
    Jquery中AJAX参数详细介绍
    首次使用Vue开发
    js 鼠标拖拽元素
    Oracle涂抹oracle学习笔记第10章Data Guard说,我就是备份
  • 原文地址:https://www.cnblogs.com/timeship/p/2622136.html
Copyright © 2011-2022 走看看