阅读训练

版权声明:转载请注明出处: https://blog.csdn.net/weixin_43871781/article/details/85033433

题目描述
一天晨晨在做阅读训练。她拿了一本包括n篇文章的小说集,第i篇文章包括bi (1≤bi≤100)页,已知晨晨每读一页都要花一分钟。假设晨晨开始阅读小说第一页的时间起点为0,她读第一篇文章从时间点0到时间点b1-1,第二篇文章从时间点b1到时间点b1+b2-1,依此类推…,阅读第n篇文章的时间点b1+b2+…+bn-1到时间点b1+b2+…+bn-1+bn-1。那么,当在时间点t时(0≤t<阅读总时间),你知道晨晨在阅读第几篇文章吗?
其实晨晨的好奇心比你还强,虽然阅读还未正式开始,但她很想知道在未来Q个时间点时,自己分别会在阅读哪一篇文章?
严重偏文科的晨晨,感觉这个问题很棘手,就想请你这个电脑高手帮忙。
例如:如果一本书包括三篇文章:第一篇文章2页,第二篇文章1页,第三篇文章3页,那么时间点与所读文章(序号)的关系如下图所示:

输入
第一行:包括空格分开的两个整数N和Q (其中1≤n≤100,1≤Q≤1000) 。
接下来的N行,每行一个整数代表每篇文章的页数。
再接下来是Q行,每行一个整数代表一个时间点。

输出
总共Q行,每行一个数,代表按输入顺序的每个时间点正在阅读的文章序号。

样例输入
复制样例数据
3 5
2
1
3
2
3
4
0
1
样例输出
2
3
3
1
1

Thought:

#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;
int main()
{
    int n,q,a[105],b[1005],i,k,tmp;
    while(~scanf("%d%d",&n,&q))
    {
       for(i=0;i<n;i++)
       scanf("%d",&a[i]);
       for(i=0;i<q;i++){
       scanf("%d",&b[i]);
       k=0;tmp=1;
       b[i]+=1;
       while(b[i]-a[k]>0)
       {
          b[i]-=a[k];
          k++;tmp++;}
       printf("%d\n",tmp);}
    }
   return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_43871781/article/details/85033433