zoukankan      html  css  js  c++  java
  • 2018QBXT刷题游记(3)

    【2018QBXT刷题游记】

    Day1 TEST1

    T3 difer

    【问题描述】
    在数学中, 对光滑函数求微分是一种常见的操作。 在实际应用中, 一些函数没有解析形式, 通常会从函数上取若干个点,用这些点来近似地表示这个函数。
    现在有一个函数(f(x)),我们在函数上取 (n)个值 (f(1),f(2),…,f(n))。对函数 (f(x))取微分得到函数 (f’(x))。我们近似地认为 (f’(i)=f(i)-f(i-1))
    同理,对 (f’(x))求微分可以得到 (f’’(x)),我们近似地认为 (f’’(i)=f’(i)-f’(i-1))。(注意这里的 f’(i)和 f’(i-1)本身就是我们求的近似值)。
    函数 (f’(x))被称为一阶微分, (f’’(x))被称为二阶微分。如果对函数 (f(x))连续做 (m)次微分操作,得到的函数被称为 (m) 阶微分。 特殊地, (f(x))可以被认为是自身的0阶微分。
    (f[m](x))表示 (f(x))(m) 阶微分,我们认为对任意自然数 (m),有 (f[m](0)=0)
    在计算近似值时,直接使用这条性质。

    输入的是 (f(1),f(2),…,f(n))
    (f[0](x)=f(x), x=1,2,…,n)
    (f[i](0)=0, i=0,1,…m)
    (f[i](x)=f[i-1](x)-f[i-1](x-1), x=1,2,…,n, i=1,2,…,m)
    输出的是 (f[m](x) , x=1,2,…,n)
    【输入格式】
    第一行两个数 (n, m)
    第二行 n 个数 (f(1),f(2),…,f(n))
    【输出格式】
    输出 (n) 行, 第 (x) 行是 (f[m](x))
    结果对 (100007) 取模
    【样例输入】
    3 2
    6 7 8
    【样例输出】
    6
    100002
    0
    【数据规模和约定】
    对于 30%的数据, (m<=1000)
    对于 60%的数据,(m<=10^6)
    对于 100%的数据, (n<=1000, m<=10^9, 0<=f(i)<100007)

    【分析】

    可以发现:

    [f[m](i)=sum_{j=0}^i (-1)^j·C(m,j)·f[0](i-j) ]

    需要注意的是,模数不是质数,所以不能用卢卡斯定理。

    一开始以为是扩展卢卡斯,后来发现这题数据比较小,没必要这么麻烦。对分子和分母分解质因数即可。

    #include<iostream>
    #include<cstdio>
    using namespace std;
    #define MOD 100007
    #define MAXN 1007
    #define ll long long
    int n,m,fenzi[MAXN][MAXN],fenmu[MAXN][MAXN],shengyu[MAXN];
    int f[MAXN];//初始 
    int ans[MAXN]; 
    int add(int x,int y){
    	x+=y;
    	if(x>=MOD)x-=MOD;
    	return x;
    }
    int jian(int x,int y){
    	x-=y;
    	if(x<0)x+=MOD;
    	return x;
    }
    int mul(int x,int y){
    	ll ret=x;
    	ret*=y;
    	ret%=MOD;x=ret;
    	return x;
    }
    
    int main(){
    	freopen("difer.in","r",stdin);
    	freopen("difer.out","w",stdout);
    	scanf("%d%d",&n,&m);
    	for(int i=1;i<=n;i++)scanf("%d",&f[i]);
    	for(int i=1;i<=n&&i<=m;i++){//对分子质因数分解 
    		fenzi[i][0]=m+1-i;
    		for(int j=2;j<=n;j++){
    			while(fenzi[i][0]%j==0){//保证分解出的一定是质数 
    				fenzi[i][0]/=j;
    				fenzi[i][j]++;
    			}
    		}
    		fenzi[i][0]%=MOD;
    	}
    	for(int i=1;i<=n&&i<=m;i++){//对分母质因数分解 
    		fenmu[i][0]=i;
    		for(int j=2;j<=n;j++){
    			while(fenmu[i][0]%j==0){
    				fenmu[i][0]/=j;
    				fenmu[i][j]++;
    			}
    		}
    	}ans[0]=1;
    	for(int i=1;i<=n&&i<=m;i++){
    		ans[i]=1;
    		for(int j=1;j<=i;j++)ans[i]=mul(ans[i],fenzi[j][0]);
    		for(int j=2;j<=n;j++){
    			shengyu[j]+=(fenzi[i][j]-fenmu[i][j]);
    		}
    		for(int j=2;j<=n;j++){
    			for(int k=1;k<=shengyu[j];k++)ans[i]=mul(ans[i],j);
    		}
    		if(i&1)ans[i]=jian(0,ans[i]);
    	}
    	for(int i=1;i<=n;i++){
    		int ret=0;
    		for(int j=0;j<=i&&j<=m;j++)ret=add(ret,mul(f[i-j],ans[j]));
    		printf("%d
    ",ret);
    	}
    	return 0;
    }
    
  • 相关阅读:
    使用sshfs挂载远程服务器目录
    yum install --downloadonly 下载依赖包到本地 但不安装
    CentOS 7安装SSHFS 实现远程主机目录 挂载为本地目录
    CentOS7下FTP的安装与配置
    标签传播算法(Label Propagation Algorithm, LPA)初探
    线性模型(linear model)基本定义及参数求解数学本质、损失函数的选择与评估数学原理、及其基于线性模型衍生的其他机器学习模型相关原理讨论
    贝叶斯A/B测试
    谨慎选择我们的先验
    关于年会抢红包游戏的一个思考
    WMI攻击技术研究
  • 原文地址:https://www.cnblogs.com/erutsiom/p/9901712.html
Copyright © 2011-2022 走看看