[Mean of range in array]
Given an array of n integers and q queries. Write a program to print floor value of mean in range l to r for each query in a new line.
Examples:
Input : arr[] = {1, 2, 3, 4, 5}
q = 3
0 2
1 3
0 4
Output : 2
3
3
Here for 0 to 2 (1 + 2 + 3) / 3 = 2
Input : arr[] = {6, 7, 8, 10}
q = 2
0 3
1 2
Output : 7
7
Input:
The first line consists of an integer T i.e number of test cases.
The first line of each test case consists of two integer n and q.
The next line consists of n spaced integers. The next line consists of 2*k spaced integers each pair representing the range.
Output:
Print the mean(floor value) in given range for each query in new line.
Constraints:
1<=T<=100
1<=q<n<=1000
1<=a[i]<=1000
Example:
Input:
1
5 3
1 2 3 4 5
0 2 1 3 0 4
Output:
2 3 3
下面是我的代码实现:
#include <stdio.h>
int main() {
int num,i;//测试用例
scanf("%d\n",&num);
for(i=0;i<num;i++)
{
int N,M,j;
scanf("%d",&N);
scanf("%d",&M);
int *Arr=(int *)malloc(sizeof(int)*N);
int *Brr=(int *)malloc(sizeof(int)*2*M);
for(j=0;j<N;j++)//依次输入数组元素
scanf("%d",&Arr[j]);
for(j=0;j<2*M;j++)//依次输入"测试对"的值
scanf("%d",&Brr[j]);
for(j=0;j<M;j++)//循环求解平均值
{
int avg=0,sum=0,k;
for(k=Brr[2*j];k<=Brr[2*j+1];k++)
{
sum=sum+Arr[k];//求和
}
avg=sum/(Brr[2*j+1]-Brr[2*j]+1);//平均值=和/元素个数。
printf("%d ",avg);
}
}
return 0;
}
然后提交的时候,出现的问题是:
Wrong Answer. !!!Wrong Answer Possibly your code doesn't work correctly for multiple test-cases (TCs). The first test case where your code failed: Input: 42 30 335 501 170 725 479 359 963 465 706 146 282 828 962 492 996 943 828 437 392 605 903 154 293 383 422 717 719 896 448 727 772 539 870 913 668 300 36 895 704 812 323 334 2 33 21 25 22 29 8 11 28 39 3 7 29 39 19 22 10 11 14 36 34 36 10 38 10 28 20 33 9 14 10 20 12 21 20 33 15 23 4 18 24 38 10 26 16 29 15 18 14 25 34 35 24 32 35 39 3 35 6 19 Its Correct output is: 610 393 575 490 640 598 657 488 555 607 334 624 615 625 617 697 671 625 548 618 641 609 566 650 589 484 678 549 616 646 And Your Code's output is: 610 393 575 490 640 598 657 488 555 607 334 624 615 625 617 697 671 625 548 618 641 609 566 650 589 484 678 549 616 646 434 499 485 480 447 559 426 455 482 494 501 511 4...
截图如下:

这是为什么我的代码会多输出这么多数据呢?我很不理解。。。。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++问题已经解决++++++分割线+++++问题已经解决++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
现在已经理解了我之前的错误。
这个程序,在Code Blocks里面的输出是正常的,截图如下:

正确的输出是因为我在输入案例中只输入了一个,程序员自己可以控制格式。
但是为什么在geeksforgeeks就会出错呢?
是因为当它评判的时候,是将输出放在一个文件里面,然后通过对比我的程序的输出文件和它正确的文件,如果一致就通过,如果不一致,就是wrong answer!!!。并且它的评判应该是多个测试用例,每一个测试用例是通过换行进行分割的。我的程序中没有在每一个测试用例结束时候通过换行进行分割。,所以,增加了每一个测试用例结束时候的换行,就解决了这个问题。
这个题目我稍微理解了一些OJ的评判方法。多加练习才是。
现在的代码更新如下:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num,i;//测试用例
scanf("%d\n",&num);
for(i=0;i<num;i++)
{
int N,M,j;
scanf("%d",&N);
scanf("%d",&M);
int *Arr=(int *)malloc(sizeof(int)*N);
int *Brr=(int *)malloc(sizeof(int)*2*M);
for(j=0;j<N;j++)//依次输入数组元素
scanf("%d",&Arr[j]);
for(j=0;j<2*M;j++)//依次输入"测试对"的值
scanf("%d",&Brr[j]);
for(j=0;j<M;j++)//循环求解平均值
{
int avg=0,sum=0,k;
for(k=Brr[2*j];k<=Brr[2*j+1];k++)
{
sum=sum+Arr[k];//求和
}
avg=sum/(Brr[2*j+1]-Brr[2*j]+1);//平均值=和/元素个数。
printf("%d ",avg);
}
printf("\n");
}
return 0;
}
还有一种更简单的方案,如下:就是使用变量进行计算和,然后求平均值。相比之前的程序,节省了存储空间。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num,i;
scanf("%d",&num);
for(i=0;i<num;i++)
{
int N,M,j;//N是数组元素个数,M是测试对。j循环变量
scanf("%d",&N);
scanf("%d",&M);
int *Arr=(int *)malloc(sizeof(int)*N);
for(j=0;j<N;j++)
scanf("%d",&Arr[j]);
int left, right,k;//left和right是范围变量,k是循环变量,sum是当前和。
int *result=(int *)malloc(sizeof(int)*M);//存放结果。
for(j=0;j<M;j++)
{
scanf("%d",&left);
scanf("%d",&right);
int sum=0;
for(k=left;k<=right;k++)
{
sum=sum+Arr[k];
}
result[j]=sum/(right-left+1);
}
for(j=0;j<M;j++)
printf("%d ",result[j]);
}
return 0;
}
如有疑问,请留言。
[Mean of range in array]的更多相关文章
- 【VBA】利用Range声明Array(一维/二维)
[说明] B2开始到B?(中间不能有空格),定义一维数组Arr_approver() Dim R_sh As Worksheet Set R_sh = ThisWorkbook.Sheets(&quo ...
- 转 python range 用法
详细记录python的range()函数用法 使用python的人都知道range()函数很方便,今天再用到他的时候发现了很多以前看到过但是忘记的细节.这里记录一下range(),复习下list的 ...
- 详细记录python的range()函数用法
使用python的人都知道range()函数很方便,今天再用到他的时候发现了很多以前看到过但是忘记的细节.这里记录一下range(),复习下list的slide,最后分析一个好玩儿的冒泡程序. 这里记 ...
- range,shuffle,str_shuffle
print_r(range(1,20)); 输出,range产生 Array( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 ...
- iOS 判断数组array中是否包含元素a,取出a在array中的下标+数组方法详解
目前找到来4个解决办法,第三个尤为简单方便 NSArray * arr = @["]; //是否包含 "]) { NSInteger index = [arr indexOfObj ...
- python 内置函数range和xrange
range range 是一种类型(type),它是一个数字的序列,而且是不可变的,通常用在for循环中. class range(stop)class range(start, stop [, st ...
- python中的range与xrange
range 也是一种类型(type),它是一个数字的序列(s sequence of numbers),而且是不可变的,通常用在for循环中. class range(stop) class rang ...
- (转)python的range()函数用法
使用python的人都知道range()函数很方便,今天再用到他的时候发现了很多以前看到过但是忘记的细节.这里记录一下range(),复习下list的slide,最后分析一个好玩儿的冒泡程序. 转自: ...
- range() 函数详解 python
使用python的人都知道range()函数很方便,今天再用到他的时候发现了很多以前看到过但是忘记的细节.这里记录一下range(),复习下list的slide,最后分析一个好玩儿的冒泡程序. 这里记 ...
随机推荐
- PendingIntent、Notification常用方法
PendingIntent PendingIntent它的直译是:待处理意图,这样翻译,大家就猜出它的作用是什么了,用于处理一些定义但是不立即使用的意图,最常见的就是用户点击通知,然后跳转指定的页面: ...
- c语言的字符串
1. 字符串 1. 什么是字符串 ● 简单的字符串”itcast” ● 一个’i’是一个字符 ● 很多个字符组合在一起就是字符串了 2. 字符串的初始化 ● char a[] = “123”; ...
- 中英文代码对比系列之Java一例
原文: https://zhuanlan.zhihu.com/p/30905033. 作者为本人. 这个系列将对同一段代码进行中文命名和英文命名两个版本的比较. 目的包括, 演示中文命名, 发现命名时 ...
- Git版本控制器的使用
首先介绍一下什么是Git:git是目前最流行的版本控制系统,属于分布式版本控制器. 使用Git前先要在GitHub创建代码仓库,或者获取你要应用的GitHub的链接地址. 创建GitHub仓库这里就不 ...
- 数据结构与算法(C/C++版)【栈与队列】
第三章<栈与队列> (一)栈简介 栈(Stack):只允许在一端进行插入或删除操作的线性表.首先栈是一种线性表,但是限定这种线性表只能在某一端进行插入和删除操作栈顶(top):线性表允许 ...
- Python学习之--socket
1.Socket概述 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket.socket通常也称作"套接字",用于描述IP地址和端口,是一个 ...
- haproxy,tomcat.apache记录用户真实IP
Haproxy配置: default加入: option httpclose option forwardfor Tomcat配置: server.xml中添加 prefix="localh ...
- Android ListView与RecycleView的对比使用
ListView,就如其名,是用来显示列表的一种View,而RecycleView,是其的加强版,今天带来的是这两个几乎具有相同的功能的对比使用 先从ListView说起吧 ListView: 1.在 ...
- Linux 网络编程中的read和write函数正确的使用方式
字节流套接字上的read和write函数所表现的行为不同于通常的文件IO,字节流套接字上调用read和write输入或输出的可能比请求的数量少,然而这不是出错的状态,例如某个中端使read和write ...
- Ext.chart.Chart 显示图标 -- 本地数据
先来张直观的图,基于ext4.2制作 这就是弹出来的图表了. 今天先搭建一个本地数据版,也是静态数据版. 点击一个按钮执行一个function,来看function里面的东西: 一.依赖 Ext.re ...