站外题求调
  • 板块灌水区
  • 楼主ssdhnd
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/10/16 22:40
  • 上次更新2024/10/17 11:48:42
查看原帖
站外题求调
1406173
ssdhnd楼主2024/10/16 22:40

时间限制:1秒 内存限制:256M

2.1 问题描述

小明现在给你nn个非负整数a1,a2,...,an1,ana_1,a_2,...,a_{n-1},a_n
现在小明要求你把这nn个非负整数从左到右按照十进制表示法写成一行。 然后现在小明会给你qq次询问。

每次询问给你三个参数 l,r,xl,r,x,问al,al+1,...,ara_l,a_{l+1},...,a_r中数位xx出现了几次

2.2 输入格式

第一行读入两个正整数n,qn,q

第二行读入 nn个非负整数,表示a1,a2,...,an1,ana_1,a_2,...,a_{n-1},a_n
接下来 qq行,每行三个整数 l,r,xl,r,x,表示对应询问。

2.3 输出格式

输出 qq行,从上到下依次表示对于每组询问的答案。

2.4 输入样例

5 5
30 0 123 0 53
1 2 0
1 4 0
2 4 0
1 5 3
1 5 1

2.5 输出样例

2
3
2
3
1

2.6 数据描述

对于测试点141 \sim 4
1n,q1000,0ai1091 \le n,q \le 1000,0 \le a_i \le 10^9
对于测试点585 \sim 8
1n,q2×105,0ai11 \le n,q \le 2 \times 10 ^ 5,0 \le a _ i \le 1
对于测试点9209 \sim 20
1n,q2×105,0ai1091 \le n,q \le 2 \times 10 ^ 5,0 \le a _ i \le 10 ^9

本人代码:

#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

2024/10/16 22:40
加载中...