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. Angular2,React集成

    https://www.packtpub.com/books/content/integrating-angular-2-react http://www.syntaxsuccess.com/view ...

  2. 【同行说】Android图片处理技术资料汇总(一)

    对于Android开发的童鞋们来说,图片处理时或多或少都会遇到令人头疼和不满意的问题,今天小编收集了5篇Android图片处理的干货文章,一起来看看吧! 一.Android 高清加载巨图方案 拒绝压缩 ...

  3. ubuntu安装docker

    uname -r #查看内核版本要大于3.10apt-get updateapt-get install linux-image-generic-lts-trusty wget -qO- https: ...

  4. WTL消息以及处理函数声明

    MSG_WM_CREATE LRESULT OnCreate(LPCREATESTRUCT lpCreateStruct); MSG_WM_INITDIALOG LRESULT OnInitDialo ...

  5. Openjudge-计算概论(A)-晶晶赴约会

    描述 晶晶的朋友贝贝约晶晶下周一起去看展览,但晶晶每周的1.3.5有课必须上课,请帮晶晶判断她能否接受贝贝的邀请,如果能输出YES:如果不能则输出NO. 输入输入有一行,贝贝邀请晶晶去看展览的日期,用 ...

  6. 不合法语句 self.contentView.frame.origin.x = x;

    下面的写法是错误的: CGFloat x = self.contentView.frame.origin.x; x = _lastDownX + translation.x; self.content ...

  7. 测试sql性能方法

    SET STATISTICS io ON         SET STATISTICS time ON         go          ---你要测试的sql语句          selec ...

  8. DPI与PPI

    首先应该明白几个概念: 1寸=3.3333333厘米(cm)1英寸(in)=2.54厘米(cm)屏幕尺寸: 屏幕对角线的长度.电脑电视同理.LCD是由液态晶体组成的显示屏(本向不发光) 有于电脑手机显 ...

  9. php学习的第8天

    晚上老师布置啦17题算数问题的作业 我一看 感觉挺容易的 动手就开始做啦起来 不知不觉也9点多啊 终于做好前部题目 发现这我3个月前也遇到类似的题目 那是我还一题都做一题用上1个钟左右 好多也做不出 ...

  10. 2016 百度之星初赛 Gym Class(优先队列+拓扑排序)

    Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Status Pract ...