【发布时间】:2020-07-17 06:13:08
【问题描述】:
我试过了,但我无法正确实现它。 这是我写的代码是错误的,因为我没有计算一些子数组。 是否可以编写一个运行的算法 O(n)
int even=0 , count =0 ;
for( int i=0 ; i<n ; ++i ) {
if(arr[i]%4==0) {
count = count + n - i ;
if(even==1) {
count = count + n - i ;
--even;
}
}
else if(a[i]%2==0) {
++even;
if(even==2) {
count = count + n - i ;
--even;
}
}
}
示例 I/O - 如果 arr[] = {1,4,9} 那么答案应该是 4 因为 {1,4} , {1,4,9} , {4,9} , {4} 有他们的产品能被 4 整除。
【问题讨论】:
-
您能否为这个问题提供一些示例输入/输出?
-
@ManishSundriyal 如果 a[3] = {1,4,9}。答案应该是 3,因为 {1,4} 、 {4} 、 {4,9} 的产品可以被 4 整除。编辑 - {1,4,9} 也是有效的
-
@newbie 但
{1,4,9}本身不也算作子数组吗?它的乘积也能被 4 整除。 -
@newbie 什么是子数组?例如给定 {1,4,9} 是 {1,9} 一个子数组?还是子数组元素必须在父数组中连续?换句话说,子数组是子集还是子序列?
-
@selbie 是的,抱歉我忘记了。