题目链接
题目大意
有2k个数,然后我们每次把相邻的两个数相加%10,就是第一个数和第二个数一组相加取余10,第二个和第三个数相加取余10… … … 这样下去,2k个数变为2k-1个数直到变为1个数,问你这么多次取余的过程中和大于10的有多少次
解题思路
比赛的时候脑子坏掉了… … … 竟然没有想到
一个区间【l,r】取余进位的次数,就是这个区间的和除10的商。因为每次取余的结果就是和的个位数,还要留着继续加。
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
const int N=1e5+5;
long long a[N],sum[N];
int main()
{
int n,m,x,y;
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%lld",&a[i]);
sum[0]=0;
for(int i=1;i<=n;i++)
sum[i]=sum[i-1]+a[i];
scanf("%d",&m);
for(int i=1;i<=m;i++)
{
scanf("%d %d",&x,&y);
printf("%lld\n",(sum[y]-sum[x-1])/(long long)10);
}
return 0;
}