时间限制:1秒 内存限制:256M
小明现在给你n个非负整数a1,a2,...,an−1,an
现在小明要求你把这n个非负整数从左到右按照十进制表示法写成一行。
然后现在小明会给你q次询问。
每次询问给你三个参数 l,r,x,问al,al+1,...,ar中数位x出现了几次
第一行读入两个正整数n,q。
第二行读入
n个非负整数,表示a1,a2,...,an−1,an
接下来 q行,每行三个整数 l,r,x,表示对应询问。
输出 q行,从上到下依次表示对于每组询问的答案。
5 5
30 0 123 0 53
1 2 0
1 4 0
2 4 0
1 5 3
1 5 1
2
3
2
3
1
对于测试点1∼4:
1≤n,q≤1000,0≤ai≤109
对于测试点5∼8:
1≤n,q≤2×105,0≤ai≤1
对于测试点9∼20:
1≤n,q≤2×105,0≤ai≤109
本人代码:
#include <bits/stdc++.h>
using namespace std;
long long n,q,a,ans[100005][10];
int main(){
cin>>n>>q;
for(int i=1;i<=n;i++){
cin>>a;
if(a==0){
ans[i][0]++;
}
while(a!=0){
ans[i][a%10]++;
a/=10;
}
for(int j=0;j<10;j++){
ans[i][j]+=ans[i-1][j];
}
}
while(q--){
int l,r,x;
cin>>l>>r>>x;
cout<<ans[r][x]-ans[l-1][x]<<'\n';
}
return 0;
}
20分,其余全RE