题目的意思是给你一些数字a[i](首位相连),现在要你选出一些连续的数字连续的每一位单独地作为一个数位。现在问你有多少种选择的方式使得选出的数字为k的一个倍数。

其实题目是很简单的。由于k不大(200),总共的数字个数为50000,所以我们对于当前走到的每一个数字最多的状态数目也只有50000*200个。

同时由于是循环的,我们可以使长度增倍,这样就可以保证序列是循环的了。

不过注意,增倍后空间是开不下的,所以需要使用循环的滚动数组。

同时注意递推的细节,还有有的a[i]不止一位数,不能直接取模。

#include <iostream>
#include <cstdio>
#include <cstring>
#define maxn 50050
typedef long long ll;
using namespace std; int a[*maxn],f[*maxn],n,m,k,tep,cur,w[*maxn];
int s[maxn][];
ll ans; void init_(int x)
{
for (int i=; i<k; i++) s[x][i]=;
} int count(int x)
{
if (x<) return ;
if (x<) return ;
if (x<) return ;
return ;
} int get(int x)
{
if (x==) return ;
if (x==) return %k;
if (x==) return %k;
return %k;
} int power(int x,int y)
{
int tot=;
while (y)
{
if (y&) tot=(tot*x)%k;
y>>=;
x=(x*x)%k;
}
return tot;
} int main()
{
while (scanf("%d%d",&n,&k)!=EOF)
{
ans=;
w[]=,f[]=;
for (int i=; i<=n; i++)
{
scanf("%d",&a[i]);
a[i+n]=a[i];
w[i]=count(a[i]);
w[i+n]=count(a[i+n]);
}
for (int i=; i<=*n; i++) f[i]=(f[i-]*get(w[i])+a[i])%k;
for (int i=; i<=*n; i++) w[i]+=w[i-];
for (int i=; i<=n; i++)
{
init_(i);
s[i][a[i]%k]++;
for (int j=; j<k; j++) s[i][(get(w[i]-w[i-])*j+a[i])%k]+=s[i-][j];
}
for (int i=n+; i<=*n; i++)
{
int qq=i-n-;
if (qq==) qq=n;
init_(i-n);
s[i-n][a[i]%k]++;
for (int j=; j<k; j++) s[i-n][(get(w[i]-w[i-])*j+a[i])%k]+=s[qq][j];
cur=(f[i-n-]*power(,w[i]-w[i-n-]))%k;
cur=((f[i]-cur)%k+k)%k;
s[i-n][cur]--;
ans+=s[i-n][];
}
printf("%I64d\n",ans);
}
return ;
}

HDU4669_Mutiples on a circle的更多相关文章

  1. [翻译svg教程]svg中的circle元素

    svg中的<circle> 元素,是用来绘制圆形的,例如 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink= ...

  2. 设计一个程序,程序中有三个类,Triangle,Lader,Circle。

    //此程序写出三个类,triangle,lader,circle:其中triangle类具有类型为double的a,b,c边以及周长,面积属性, //具有周长,面积以及修改三边的功能,还有判断能否构成 ...

  3. c++作业:Circle

    Circle Github链接

  4. Modified Least Square Method and Ransan Method to Fit Circle from Data

    In OpenCv, it only provide the function fitEllipse to fit Ellipse, but doesn't provide function to f ...

  5. [javascript svg fill stroke stroke-width circle 属性讲解] svg fill stroke stroke-width circle 属性 绘制圆形及引入方式讲解

    <!DOCTYPE html> <html lang='zh-cn'> <head> <title>Insert you title</title ...

  6. (1)编写一个接口ShapePara,要求: 接口中的方法: int getArea():获得图形的面积。int getCircumference():获得图形的周长 (2)编写一个圆类Circle,要求:圆类Circle实现接口ShapePara。 该类包含有成员变量: radius:public 修饰的double类型radius,表示圆的半径。 x:private修饰的double型变量x,

    package com.hanqi.test; //创建接口 public interface ShapePara { //获取面积的方法 double getArea(); //获取周长的方法 do ...

  7. 东大oj-1591 Circle of friends

    题目描述 Nowadays, "Circle of Friends" is a very popular social networking platform in WeChat. ...

  8. svg学习(四)circle

    <circle> 标签 < <?xml version="1.0" standalone="no"?> <!DOCTYPE ...

  9. 后缀数组 --- WOj 1564 Problem 1564 - A - Circle

    Problem 1564 - A - Circle Problem's Link:   http://acm.whu.edu.cn/land/problem/detail?problem_id=156 ...

随机推荐

  1. 20155331 ch02 课下作业

    2.96 遵循位级浮点编码规则,实现具有如下原型的函数: /* *Compute (int)f. *If conversion cause overflow or f is NaN, return 0 ...

  2. 在BAE上部署Pomelo

    BAE升级到3.0后顿时感觉好用了很多,俨然云主机的感觉. 底下我将分享我在BAE上部署Pomelo的过程. 首先需要拥有一个BAE的执行单元.没有的可以自行百度并部署. 接着svn得出代码到本地.此 ...

  3. Django之Models的class Meta

    模型元数据是“任何不是字段的数据”,比如排序选项(ordering),数据库表名(db_table)或者人类可读的单复数名称(verbose_name 和verbose_name_plural).在模 ...

  4. Spring学习(一)-----Spring 模块详解

    官方下载链接:http://repo.spring.io/release/org/springframework/spring/ Spring 模块详解: Core 模块 spring-beans-3 ...

  5. zookeeper 简单小节

    1. ZooKeeper 是什么 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务.主要用来解决分布式集群中应用系统的一致性问题,它能提供基于类似于文件系统的目录节点树方式的数据存储 ...

  6. Spring 定时任务Scheduled 开发详细图文

    Spring 定时任务Scheduled 开发 文章目录 一.前言 1.1 定时任务 1.2 开发环境 1.3 技术实现 二.创建包含WEB.xml 的Maven 项目 2.1 创建多模块项目task ...

  7. 列出连通集(mooc)

    给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集.假设顶点从0到N−1编号.进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访问邻接点. 输入格式: 输入第1 ...

  8. Docker运行简单的Demo

    打开cmd.exe 输入docker run hello-world,本机没有这个images实例,将会从官方下载下载 运行一个简单的web实例,例如输入: docker run --name asp ...

  9. Spring学习(3):Spring概述(转载)

    1. Spring是什么? Spring是一个开源的轻量级Java SE(Java 标准版本)/Java EE(Java 企业版本)开发应用框架,其目的是用于简化企业级应用程序开发. 在面向对象思想中 ...

  10. django项目中关于跨域CORS

    1.使用django-cors-headers扩展,但首先进行安装 2.在配置中添加应用 3.在中间层中设置:“corsheaders.middleware.CorsMiddleware” 4.添加C ...