input

1<=n<=2000

a1 a2 ... an 1<=ai<=5*10e7

output

n行,第i行指切成i段,每段和的最大公约数的最大值

做法:环形数组切成n段,每段和的最大公约数肯定是总数的约数,然后只要求出每个约数对应的最大段数即可,即前缀和模d出现最多的次数

 #include <cstdio>
#include <queue>
#include <cstring>
#include <iostream>
#include <cstdlib>
#include <algorithm>
#include <vector>
#include <map>
#include <set>
#include <ctime>
#include <cmath> using namespace std; long long d[],a[];
int n,dn,k[]; void fac(long long x)
{
int m=sqrt(x)+0.5;
dn=;
for(int i=;i<=m;i++)
if(x%i==) d[dn++]=i;
for(int i=dn-;i>=;i--)
d[dn++]=x/d[i];
} /*//错的,不能保证最大
int findk(int idx)找到第一个出现重复的r,即出现了(r+nd)%d=r
{
long long r;
int i,k;
set<long long> q;
for(i=0;i<n;i++)
{
r=a[i]%d[idx];
if(!q.count(r)) q.insert(r);
else break;
}
i<n&&q.count(a[i]%d[idx])?k=2:k=1;
i++;
for(;i<n;i++)
if(a[i]%d[idx]==r) k++;
return k;
}
*/ const int HASH=;
int head[HASH],next[HASH],num[HASH];
long long st[HASH]; int insert(int s)
{
int h=st[s]%HASH;
int u=head[h];
while(u)
{
if(st[u]==st[s])
{
num[u]++;
return ;
}
u=next[u];
}
next[s]=head[h];
head[h]=s;
return ;
} int findk(int idx)//出现最多次的r的次数为该环切成最多段数能被d整除
{
memset(head,,sizeof(head));
int i,j,maxk=-;
for(i=,j=;i<n;i++)
{
st[j]=a[i]%d[idx];
//printf("st1 %lld\n",st[j]);
num[j]=;
if(insert(j)) j++;
}
for(int i=;i<j;i++)
if(num[i]>maxk) maxk=num[i];
return maxk;
} int main()
{
freopen("/home/user/桌面/in","r",stdin);
while(scanf("%d",&n)==)
{
scanf("%lld",&a[]);
for(int i=;i<n;i++)
{
scanf("%lld",&a[i]);
a[i]+=a[i-];
}
fac(a[n-]);
for(int i=;i<dn;i++)
k[i]=findk(i);
//for(int i=0;i<dn;i++) printf("the%d %lld %d\n",i+1,d[i],k[i]);
for(int i=;i<=n;i++)
for(int j=dn-;j>=;j--)
if(k[j]>=i)
{
printf("%lld\n",d[j]);
break;
}
}
//printf("time=%.3lf",(double)clock()/CLOCKS_PER_SEC);
return ;
}

hiho1246(数学求模)的更多相关文章

  1. n对mod求模整除时转化成mod的数学式

    n对mod求模,它的值在0到mod-1之间,如果要求模整除的时候转化成mod可以用下面的式子: n = (n - 1 % mod + mod) % mod +1 这里先减一,模上mod再加一,这样如果 ...

  2. 【转】C/C++求模求余运算符——2013-08-20

    http://blog.csdn.net/whealker/article/details/6203629 求模运算符(%),或称求余运算符,也就是数学上所谓的除法中的余数,%两侧均应为整数, |小| ...

  3. NYOJ-676小明的求助,快速幂求模,快速幂核心代码;

    小明的求助 时间限制:2000 ms  |  内存限制:65535 KB 难度:2 描述 小明对数学很有兴趣,今天老师出了道作业题,让他求整数N的后M位,他瞬间感觉老师在作弄他,因为这是so easy ...

  4. 【C语言学习趣事】_33_关于C语言和C++语言中的取余数(求模)的计算_有符号和无符号数的相互转换问题

    最近再次复习C++语言,用的教材是<C++ Primer>这本教材, 看到第二章的时候,里面有个问题困扰了我. 于是想上网查查怎么回事, 结果看了很久都没有得到一个满意的答案. 书上有这么 ...

  5. 求余VS求模--C语言中表述

    之前看帖子,发现许多时候基本上大家都把求模和求余混为一谈了.但实际上二者的概念是有区别的   1. 求余 在C语言中,求余对应的操作符是%,且a%b求余的最后结果总是与a符号相同,最后的数值为|a|% ...

  6. eq相等 ne、neq不相等, gt大于, lt小于 gte、ge大于等于 lte、le 小于等于 not非 mod求模 等

    eq相等   ne.neq不相等,   gt大于, lt小于 gte.ge大于等于   lte.le 小于等于   not非   mod求模   is [not] div by是否能被某数整除   i ...

  7. NYOJ-102 次方求模 AC 分类: NYOJ 2014-02-06 18:53 184人阅读 评论(0) 收藏

    地址:http://acm.nyist.net/JudgeOnline/problem.php?pid=102 //a^b mod c=(a mod c)^b mod c很容易设计出一个基于二分的递归 ...

  8. 大数求模 sicily 1020

        Search

  9. UVA 11174 Stand in a Line (组合+除法的求模)

    题意:村子里有n个人,给出父亲和儿子的关系,有多少种方式可以把他们排成一列,使得没人会排在他父亲的前面 思路:设f[i]表示以i为根的子树有f[i]种排法,节点i的各个子树的根节点,即它的儿子为c1, ...

随机推荐

  1. 100+ 值得收藏的 Web 开发资源

    原文 http://mp.weixin.qq.com/s?__biz=MjM5OTEzMzQwMA==&mid=2651667152&idx=2&sn=1dd7a77a2eff ...

  2. 5、Struts2自定义拦截器

    一.拦截器相关知识 1.Struts2框架剖析 Holly版本生活案例: 影视公司(拍电影)    ActionMapper 传媒公司(包装明星) ActionMapping 明星           ...

  3. 越狱开发-创建真正的后台程序(Daemon Process)

    在网上搜索了一下如何在IOS上面实现Daemon Process,只有chrisalvares的博客中有过详细的描述,但是其博客中描述的较为复杂, 参考stackoverflow中的一个问答: htt ...

  4. python多线程,多进程

    线程是公用内存,进程内存相互独立 python多线程只能是一个cpu,java可以将多个线程平均分配到其他cpu上 以核为单位,所以GIL(全局锁,保证线程安全,数据被安全读取)最小只能控制一个核,很 ...

  5. db2安装要设置tcp、ip

    1.注册表变量DB2COMM是否已经设置了值,是什么级别的?db2set -all | grep -i "DB2COMM" (in unix like os)db2set -all ...

  6. NOIP2014提高组第二题联合权值

    还是先看题吧: 试题描述  无向连通图 G 有 n 个点,n-1 条边.点从 1 到 n 依次编号,编号为 i 的点的权值为 Wi ,每条边的长度均为 1.图上两点(u, v)的距离定义为 u 点到 ...

  7. Python基础学习笔记---5.输入\输出 I\O文件操作目录

    在很多时候,你会想要让你的程序与用户(可能是你自己)交互.你会从用户那里得到输入,然后打印一些结果.我们可以分别使用 raw_input 和 print 语句来完成这些功能.对于输出,你也可以使用多种 ...

  8. ThinkPad 禁用 触摸板

    执行 xinput wowk@wowk:~$ xinput ⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTES ...

  9. iosOC不可变字典和可变字典

    //key 和 value 都属于(id)对象类型 //key常用字符串NSString来表示 //存储数值型 一般可用 NSString //int  age ->@(age) //  [di ...

  10. H5页面适配所有iPhone和安卓机型的六个技巧

    http://www.th7.cn/web/html-css/201605/166006.shtml http://www.th7.cn/web/html-css/201601/153127.shtm ...