Mr.Z 的四因子数 (数据加强版)

Mr.Z 的四因子数 (数据加强版)

题目描述

Mr.Z 是一多高超的数学大师,最喜欢研究的领域是数论,由于要经常做各类特殊的整数分布研充,所以他想麻烦你帮他解决一个问题。
考虑这样的一个数 K,它只含有四个因子,比如 10,它只有:1、2、5、10 这四个因子。我们将满足上述性质的数称为四因子数。
现在想请问你在区间 [ a, b ] 内有多少个四因子数。

输入描述

有多组测试数据,每组测试数据占一行。
每一行中,有两个用空格分隔的正整数 a 和 b。
a 和 b 均不超过 700000。

输出描述

对每组测试数据,输出一行答案。

输入样例

1 66666
1 666666

输出样例

15878
142481

 

这一题中给出了四因子数的定义,求n以内四因子数的个数。
第一眼看到这个题目,觉得还是有点复杂的,再仔细想下去,觉得还是有简单一点的方法的,分享一下脑海中的思路形成

过程:
想着从2枚举到根号x来看看符不符合在这个区间只有一个因子,
发现每次重新输入一个n都要重新判断1到n中四因子数的个数,重复操作太多,每次输入n之后的时间复杂度达到了O(n根号n),能不能减少重复判断的次数呢,换而言之,将每个数判断的结果放在数组中,需要计算的时候直接拿出来岂不是更快
结合上面所说,想到判断素数也有过这样的问题,筛法显得异常的高效,这一题也可以用筛法啊,
于是决定,数组的每个位上表示因数个数,构造数组时只要挨个遍历一遍,给在后面的数字中是自己的倍数的都加个1就行,计算时取数组为2的,将索引加入sum中


于是,代码如下:

#include<memory.h>
#include<iostream>
using namespace std;
char yinshugeshu[700100]; 
int main(
本表以Fama-French三因子资产定价模型为依据,提供市场溢酬因子(Rm-Rf),市值因子(SMB)和账面市值比因子(HML)的月序列数据。 表中计算所用的无风险收益数据选择标准为:开始--2002年8月6日用三个月期定期银行存款利率; 2002年8月7日--2006年10月7日用三个月期中央银行票据的票面利率; 2006年10月8日--当前,用上海银行间3个月同业拆放利率。 三因子数据包括: 市场溢酬因子__流通市值加权 Rm-Rf 市值因子__流通市值加权 SMB 账面市值比因子__流通市值加权 HML 市场溢酬因子__总市值加权 Rm-Rf 市值因子__总市值加权 SMB 账面市值比因子__总市值加权 HML 有以下3种方式计算的月惯性因子(又称动量因子)。 计算方法1:惯性因子=前n个月累积收益最高的30%的所有股票组合加权收益率-前n个月累积收益最低的30%的所有股票组合加权收益率。 计算方法2:惯性因子=前n个月累积收益最高的10%的所有股票组合加权收益率-前n个月累积收益最低的10%的所有股票组合加权收益率。 计算方法3:惯性因子=前n个月累积收益大于零的所有股票组合加权收益率-前n个月累积收益小于零所有股票组合加权收益率。 其中,n=3、4、5、6、7、8、9、10、11、12、18、24;加权方式为等权、流通市值加权、总市值加权。 在Carhart四因子模型经典文献中,惯性因子=前11个月累积收益最高的30%的股票组合等权收益率-前11个月累积收益最低的30%的股票组合等权收益率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值