D  RP Test

Time Limit:1000MS  Memory Limit:65535K

题型: 编程题   语言: 无限制

描述

    LRC是SCAU_ACM校队的主席,职业生涯为校队作过很多贡献。除此之外,LRC也被各路ACMER奉为RP之神,源于以下两件事:1.曾用随机算法以1/(50^100)概率AC了一道dp题;2.省赛抽奖现场以1/600概率抽中特等奖获得一个4T的SSD。但大家不知道,LRC有一个测试当天RP值的奇葩方法。首先,用随机算法random出一个长度为n的数组a1,a2...,an;然后,再用随机算法random出一个长度为m的数组b1,b2...,bm;紧接着,依然是用随机算法random出一个正整数c;
接下来,LRC可以得到一个n*m的矩阵F,使得矩阵中的每个元素Fij=ai*bj;最后,计算一下F有多少个子矩阵,它的各个元素之和被c整除,那么这个值,就是他的RP值。现在LRC将所有的数random出来了,他想让未来校队的大神,也就是你,计算一下他的RP值。

输入格式

第一行一个正整数T(T<=100),代表测试数据的组数。
每组数据有3行。
第一行三个正整数n,m,c
第二行有n个正整数a1,a2...,an
第三行有m个正整数b1,b2...,bm
数据范围:
1<=n,m<=100
1<=ai,bi<=100
1<=c<=1000

输出格式

每组数据输出一行。
输出一个数,代表LRC的RP值。

输入样例

2
2 3 5
2 3
1 3 4
2 3 11
2 3
1 3 4

输出样例

6
0

Hint

样例中,有两个数组生成的2x3矩阵F如下:
2  6  8
3  9  12元素和能被5整除的的子矩阵有6个,分别是

题解:
表格是有两个数组a,b的乘积构成的,要求找出能够被c整除的子矩阵个数。直接构造表格,然后枚举。这种做法肯定会超时的。
那么要仔细分析,找突破点了:
能够被c整除,即表明这个子矩阵是c的倍数。
那么思路是:找出数组a每个区间和的因子x,v[x]++。然后枚举b数组每个区间和,对于每一个区间和s,求出s要成为c的倍数所缺少的因子,
这个因子的个数——v[x],就是就是能与当前b数组区间构成是c倍数的子矩阵的a数组的子矩阵个数。(相当抽象)
代码如下:
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>using namespace std;int a[110],b[110], v[100000];//数组v记录因子个数int gcd(int a,int b)
{return b==0?a:gcd(b,a%b);
}int main()
{int n,m,c,s,T,r,k,ans;scanf("%d",&T);while(T--){ans = 0;memset(v,0,sizeof(v));scanf("%d%d%d",&n,&m,&c);for(int i = 0; i<n; i++) scanf("%d",&a[i]);for(int i = 0; i<m; i++) scanf("%d",&b[i]);for(int i = 0; i<n; i++ ){s = 0;for(int j = i; j<n; j++){s += a[j];k = sqrt(s);for(int t = 1; t<=k; t++)//因子从1开始{if(s%t==0)//记录每个因子{v[t]++;/*如果相等,则只需记录一个。每个不同的因子都代表着这个区间,在接下来与b数组的区间结合(合法的话),如果重复记录同一个因子,会误认为有两个区间和的因子都含有t*/if(t!=s/t)v[s/t]++;}}}}for(int i = 0; i<m; i++ ){s = 0;for(int j = i; j<m; j++){s += b[j];//gcd(s,c)即s要成为c的倍数所缺少的因子ans += v[c/gcd(s,c)];}}printf("%d\n",ans);}
}

转载于:https://www.cnblogs.com/DOLFAMINGO/p/7538765.html

SCAU RP Test —— 因式分解与组合相关推荐

  1. Axure RP实例教程:组合弹出菜单效果

    Axure RP 9 Mac这款原型设计软件能让设计者快速创建应用软件,或者在web网站的线框图.流程图.原型和规格的设计制作,从低到高的视觉和交互保真度的全方位构建,是目前业界首屈一指的交互式产品原 ...

  2. (四十一)差价组合、差期组合与混合组合期权策略

    差价组合   是指用除了执行价格K不同其他条件均相同的两个或多个同种期权构造的交易策略,主要介绍牛市价差.熊市价差.蝶式价差策略等. 牛市价差组合--买低卖高   该策略持有一个较低执行价格的欧式看涨 ...

  3. python实现马科维茨模型的资本市场线_资产配置理论的基础之马科维茨模型

    *本文来自金斧子.选股宝app大师精华,精选证券市场中投资大师心得,打造距离投资大师最近.最有价值的信息场. 1952年,马科维茨在他的学术论文<资产选择:有效的多样化>中,首次应用资产组 ...

  4. 投资组合管理-风险分散与马科维茨均值方差模型

    概述 400多年前,西班牙文学大师塞万提斯在其巨作<唐吉珂德>中提出了一个被投资界奉为经典的思想:"智者不会把所有的鸡蛋放在同一个蓝子里". 那么如何分散投资才能实现最 ...

  5. 量化新手初识Brinson绩效分解模型

    一项投资的最终表现依赖于多个影响因素,而绩效分解(又称为绩效归因)便是如何定量的将实际表现分解到各个影响因素. 具体到一个公司(泛指,可以是证券公司自营部门.国家养老金.个人投资者),投资行为可能是: ...

  6. 行列式因子、不变因子、初等因子、smith标准型、Jordan标准型、最小多项式的matlab实现

    版权声明:<–本博客所有内容均为自己在学习工作中的总结.摘录等-- --转载请注明出处-- --如有侵权请联系删除–> https://blog.csdn.net/ai359005521/ ...

  7. cml sml区别_cml和sml的区别

    ML与SML有何联系和区别? 资本市场线(Capital Market Line,CML) 什么是资本市场线 资本市场线是指表明有效组合的期望收益率和标准差之间的一种简单的线性关系的一条射线.它是沿着 ...

  8. cml sml区别_CML与SML有何联系和区别?

    2009-04-29 回答 资本市场线(capital market line,clm) 什么是资本市场线 资本市场线是指表明有效组合的期望收益率和标准差之间的一种简单的线性关系的一条射线.它是沿着投 ...

  9. 马科维茨的均值一方差组合模型(转载)

    马科维茨的均值一方差组合模型(Markowitz Mean-Variance Model,Markowitz Model简称MM) 1 马科维茨的均值一方差组合模型简介 2 马科维茨模型的假设条件 3 ...

最新文章

  1. leetcode每日一题系列——797. 所有可能的路径
  2. python安装完后无法打开运行_安装Python完成后无法正确运行
  3. hbase 协处理器 部署_hbase中安装和删除observer协处理器
  4. json文件中的双引号隐藏
  5. Java高并发秒杀Api-业务分析与DAO层构建1
  6. c语言作业答案第四章,C语言程序的设计课件源程序及习题的答案第4章.ppt
  7. Linux基础——怎么样从 MacOS 或 Linux 通过 SSH 远程 Linux
  8. 无所不能的『十五郎』向您致敬!!!
  9. oppor17刷鸿蒙系统,oppo a5刷机包下载
  10. 如何在批处理/ cmd中“注释掉”(添加注释)?
  11. 基于虚拟打印的PDF文档归档探索
  12. ndwi是什么意思_NDWI是什么意思
  13. 计算机程序如何计算除法,在EXCEL表格公式中怎样计算乘积及除法?
  14. Javascript的交互性
  15. 软件工程概论期末复习笔记
  16. linux服务器磁盘空间扩充
  17. 【航天信息开票软件V3.0金税盘版安装恢复过程】有坑有心得
  18. 清除缓存-Ctrl+Shift+Delete
  19. Locating //etc/named.conf failed: 报错处理
  20. oracle查看列属性,oracle查询列属性

热门文章

  1. Texlive安装与环境变量配置
  2. 2022-2028年中国装备制造产业深度分析及发展规划咨询建议报告(全卷)
  3. 2022-2028年中国粘胶纤维市场投资分析及前景预测报告
  4. 2022-2028年中国降解塑料聚酯行业运行动态及投资机会分析报告
  5. Redis 难题突破,最经典 46 题含详细解析
  6. 记录一次简单、高效、无错误的linux上安装pytorch的过程
  7. java实现将汉语转换为拼音
  8. attention seq2seq transformer bert 学习总结 _20201107
  9. Map再整理,从底层源码探究HashMap
  10. 自主数据类型:在TVM中启用自定义数据类型探索