Problem Description
Payne和Quincy是一对好Basefriend,即使在“六一光棍节”这天,寂寞无聊的Payne决定调戏一下Quincy。
他在一张纸上写下了一串数字,然后来到Quincy面前。
“嗨,Quincy,我看你也挺无聊的,来验证一下你的智商吧。”
“噢,Payne,你又有什么鬼主意了?”
“嘿,听一听吧,会很有趣的!”
“嗯,那你说吧。”
“哈,听着,你看这里有一串数。我们从中取一段连续的数字,比如你看这的1357902468147258369,我们从中取出一段长度为7的子串,可以是5790246,或者是0246814。这样我们就得到了一些新的数。然后,让我们看看长度为7的所有子串所表示的数里面,共有多少个数是9的倍数。”
“哼,多简单的游戏啊。小孩都会算。”
“呵,那咱俩来试试?我写一个数,你来告诉我答案?”
Input
一个正整数T(1 ≤ T ≤ 100),表示有T组数据。
以下每组数据各有两行输入
第一行包含两个正整数N,M(1 ≤ N ≤ 10^6,1 ≤ M ≤ 10^3),表示母串长度为N,子串长度为M。
第二行包含一个大数,大数按十进制表示,共有N位。
Output
每组数据输出一行,包含一个数,表示母串中所有长度为M的子串中,为9的倍数的个数
Sample Input
2 3 2 181 5 3 18171
Sample Output
2 1 #include<stdio.h>#define MAXN 1000000
int t;
main()
{ int i,j,k,count; long n,m,aa; char a[MAXN]; scanf("%d",&t); for(i=0;i<t;i++) { scanf("%d%d",&n,&m); scanf("%s",a); count=0; for(j=0;j+m<=n;j++) { if(j==0) { aa=0; for(k=0;k<m;k++) aa+=a[k]-'0'; }else { aa-=a[j-1]-'0'; aa+=a[j+m-1]-'0'; } if(!(aa%9)) count++; } printf("%d\n",count); } system("pause"); return 0;}