UVALive 7327 Digit Division
来源:互联网 发布:海马助手mac版 编辑:程序博客网 时间:2024/05/22 15:53
Description
We are given a sequence of n decimal digits. The sequence needs to be partitioned into one or more
contiguous subsequences such that each subsequence, when interpreted as a decimal number, is divisible
by a given integer m.
Find the number of different such partitions modulo 109+7. When determining if two partitions are
different, we only consider the locations of subsequence boundaries rather than the digits themselves,
e.g. partitions 2|22 and 22|2 are considered different.
Input
The input file contains several test cases, each of them as described below.
The first line contains two integers n and m (1 ≤ n ≤ 300000, 1 ≤ m ≤ 1000000) — the length
of the sequence and the divisor respectively. The second line contains a string consisting of exactly n
digits.
Output
For each test case, output a single integer — the number of different partitions modulo 109 + 7 on a
line by itself.
Sample Input
4 2
1246
4 7
2015
Sample Output
4
0
#include <stdio.h>#include <string.h>#include <iostream>#include <algorithm>#include <stack>#include <vector>#include <queue>#include <set>#include <map>#include <string>#include <math.h>#include <stdlib.h>#include <time.h>using namespace std;#define showtime fprintf(stderr,"time = %.15f\n",clock() / (double)CLOCKS_PER_SEC)#define lld %I64d#define REP(i,k,n) for(int i=k;i<n;i++)#define REPP(i,k,n) for(int i=k;i<=n;i++)#define scan(d) scanf("%d",&d)#define scanl(d) scanf("%I64d",&d)#define scann(n,m) scanf("%d%d",&n,&m)#define scannl(n,m) scanf("%I64d%I64d",&n,&m)#define mst(a,k) memset(a,k,sizeof(a))#define LL long long#define N 1005inline int read(){ int s=0; char ch=getchar(); for(; ch<'0'||ch>'9'; ch=getchar()); for(; ch>='0'&&ch<='9'; ch=getchar())s=s*10+ch-'0'; return s;}int ans,res;char str[1000500];const int mod=1e9+7;int main(){ int n,m; while(scanf("%d%d%s",&n,&m,&str)!=EOF) { ans=0; res=0; for (int i=0; i<n; i++) { res=(res*10+str[i]-'0')%m; if (res==0) { if(!ans) ans=1; else ans=(ans*2)%mod;//2^(x-1) 划分的种类; } //showtime; } if (res>0) ans=0; cout<<ans<<endl; } return 0;}
- UVALive 7327 Digit Division
- UVALive 7327 Digit Division
- 【bzoj4421】【cerc2015】【Digit Division】
- bzoj4421 Digit Division 递推
- bzoj 4421: [Cerc2015] Digit Division
- 4421: [Cerc2015] Digit Division|组合数学
- Division
- Division
- Division
- Division
- Division
- UVALive 7327【模拟】
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- tjut 4722
- 计算机的组成及其功能
- 笔试面试网络知识总结
- 【CDP-云设计模式】第8章,1.队列链表模式(Queuing Chain Pattern)
- 如何有效地阅读文献并做笔记
- UVALive 7327 Digit Division
- Hust oj 1987 逃课的孩子(Map)
- Hibernate的映射文件
- 视图短函数
- Leetcode DataBase
- svm基本原理
- 立体图
- tjut 3652
- 数据源DBCP的使用