zoukankan      html  css  js  c++  java
  • 【NYOJ】[65]另一种阶乘问题

    这里写图片描述

    因为涉及到很多重复计算
    所以用了打表法

    #include<stdio.h>
    int main() {
        int a[25]= {0};
        int sum[25]= {0};
        for(int i=1; i<=22; i++) {
            if(i==1) {
                a[1]=1;
                continue;
            }
            if(i&1) {
                a[i]+=a[i-1]*i;
            } else
                a[i]=a[i-1];
        }
        for(int i=1; i<=22; i++) {
            if(i==1) {
                sum[i]=a[i];
                continue;
            }
            sum[i]+=sum[i-1]+a[i];
        }
        int T;
        scanf("%d",&T);
        while(T--) {
            int m;
            scanf("%d",&m);
            printf("%d
    ",sum[m]);
        }
        return 0;
    }
    

    标程用了另一种打表
    也就是通过一个程序先算出来各个数据
    然后实际运行时便可以缩短运行时间

    运行的程序的阶乘是通过递归函数算的
    也是很巧妙
    我现在也有些缺乏使用这些写法的意识

    /*
    #include<iostream>
    using namespace std;
    int f(int n)
    {
        if(n%2) return n==1?1:n*f(n-2);
        return f(n-1);
    }
    int g(int n)
    {
        return n?g(n-1)+f(n):0;
    }
    int main()
    {
        int n,m;
        cin>>n;
        while(n--)
        {
            cin>>m;
            cout<<g(m)<<endl;
        }
    }*/
    #include<iostream>
    using namespace std;
    int main() {
        int n,m,r[]= {0,1,2,5,8,23,38,143,248,1193,2138,12533,22928,158063,293198,2320223,4347248,38806673,73266098,727995173,1382724248};
        cin>>n;
        while(n--) {
            cin>>m;
            cout<<r[m]<<endl;
        }
    }

    题目地址:【NYOJ】[65]另一种阶乘问题

  • 相关阅读:
    伪类和伪元素的区别
    inline-block 空隙
    递归模版,绑定树
    lessJs
    怎样开发单页面app
    控件的开发接口的设计原理
    加载器中的预编
    linux加固脚本
    ogg同步服务配置复制和同步进程的开始文件及RBA
    tidb4.0修改参数全过程
  • 原文地址:https://www.cnblogs.com/BoilTask/p/12569877.html
Copyright © 2011-2022 走看看