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);
}
}
 
 

SCAU RP Test —— 因式分解与组合的更多相关文章

  1. POJ 3421 X-factor Chains (因式分解+排列组合)

    题意:一条整数链,要求相邻两数前一个整除后一个.给出链尾的数,求链的最大长度以及满足最大长度的不同链的数量. 类型:因式分解+排列组合 算法:因式分解的素因子个数即为链长,链中后一个数等于前一个数乘以 ...

  2. 反向代理及如何获得原始IP

    在现代网站架构中,scalability 已经不再是可有可无的质量属性,而是决定着网站的生死攸关,所以稍微上规模的站点都不会只有一个web server,让internet clients 直接与其交 ...

  3. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第二十二章:四元数(QUATERNIONS)

    原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第二十二章:四元数(QUATERNIONS) 学习目标 回顾复数,以及 ...

  4. RP

    关键印象 Base note 任务(task):一段代码. 进程(process):程序的实体,一个正在运行中的可执行文件.拥有独立的虚拟内存空间和系统资源,包括端口权限. 线程(thread):进程 ...

  5. Axure RP介绍

    1.什么是原型设计?产品原型设计(Prototype Design)最基础的工作,就是结合批注.大量的说明以及流程图画框架图WireFrame,将自己的产品原型完整而准确的表述给 UI.UE.程序工程 ...

  6. Axure rp 基础知识 转

    首先做个声明:此次教程里为了快速完成,借用了一些网上已有教程的图文,不是剽窃,只图方便.另外,因为汉化版本可能功能名称等略有差别,请自行理解. 名词解释: 线框图:一般就是指产品原型,比如:把线框图尽 ...

  7. 原型设计的工具-----Axure RP

     原型设计的工具-----Axure RP 1.原型设计的工具 目前能用于原型设计的工具有很多,其中有七种比较好. (1)    Axure RP (2)    Mockplus (3)    Jus ...

  8. 基于C#程序设计语言的三种组合算法

    目录 基于C#程序设计语言的三种组合算法 1. 总体思路 1.1 前言 1.2 算法思路 1.3 算法需要注意的点 2. 三种组合算法 2.1 普通组合算法 2.2 与自身进行组合的组合算法 2.3 ...

  9. Axure RP 介绍

    原型设计是将想法转变为设计过程中至关重要的一环.经常有设计师小伙伴可能会问到,“哪个原型设计工具是最好的呢”?实际上这是一种错误的提问方式,尤其是在当下原型工具种类繁多,针对不同需求各有优势的大环境中 ...

随机推荐

  1. (五)github删除仓库

    一.一直学习怎么创建仓库,创建了太多仓库,一直不知道咋删除,有点懵,其实很简单,就是对英文不太习惯,要加深英文水平. 找到setting,然后再下面找到danger Zone

  2. 第2章 Spring Boot 文档

    Spring Boot 文档 本节简要介绍了Spring Boot文档,是整个文档的参考指南. 您可以完整阅读本参考指南,或者如果您不感兴趣的话可以跳过该部分. 1. 关于文档 Spring Boot ...

  3. Android中的动画总结

    文章主要内容来源<Android开发艺术探索>,部分内容来源网上的文章,文中会有链接. Android系统提供了两个动画框架:属性动画框架和View动画框架. 两个动画框架都是可行的选项, ...

  4. 【Protocol Buffers】grpc默认使用的Google 开源的一套成熟的结构数据序列化机制

    grpc默认使用的Google 开源的一套成熟的结构数据序列化机制 参考地址:https://blog.csdn.net/shensky711/article/details/69696392 参考地 ...

  5. 深入理解Activity启动流程(二)–Activity启动相关类的类图

    本文原创作者:Cloud Chou. 欢迎转载,请注明出处和本文链接 本系列博客将详细阐述Activity的启动流程,这些博客基于Cm 10.1源码研究. 在介绍Activity的详细启动流程之前,先 ...

  6. Android View 布局流程(Layout)完全解析

    前言 上一篇文章,笔者详细讲述了View三大工作流程的第一个,Measure流程,如果对测量流程还不熟悉的读者可以参考一下上一篇文章.测量流程主要是对View树进行测量,获取每一个View的测量宽高, ...

  7. sonar+Jenkins代码覆盖率检测

    最近公司在搞代码覆盖率检查,简单看了一下结合Jenkins +jacoco + sonar做了一下主要涉及到项目层面和Jenkins层面的东西: 这里只讲一下集成,不讲解sonar的安装Jenkins ...

  8. Oracle数据库字符集解释

    转自:http://www.itpub.net/thread-836643-1-1.html Pl/SQL 执行select * from nls_database_parameters---可以查看 ...

  9. Linux中du和df

    Linux运维过程中,常常发现du和df返回值不一样,偶尔会发现区别非常大. 特定情况下,可能df看到磁盘已满,可是du推断磁盘剩余空间非常大. 文件系统分配当中的一些磁盘块用来记录它自身的一些数据. ...

  10. diff patch

    http://rails-deployment.group.iteye.com/group/wiki/1318-diff-and-patch-10-minutes-guide 情景一:你正尝试从代码编 ...