1929: Learning’s Power
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 83 Solved: 23
[ Submit][ Status][ Web Board]
Description
爱学习的小学生小萌有一天在打拳皇的时候看见了‘Pow’单词,但它不知道它是什么意思,就去百度了一下。原来Pow是能量槽的意思呀!!这时他突然看见Pow还是C/C++里的数学函数!interesting!他突发奇想:如果有一个大小为N的数组Arry,和整数Q,你知道Q次查询的答案是什么吗?每次查询包含两个整数x和y,你要告诉小萌find(x,y)是奇数还是偶数。(虽然小萌很爱学习 可是毕竟他还是小学生=w=)
find(int x,int y)
{
if(x>y) return 1;
ans = pow(A[x],find(x+1,y))
return ans
}
Input
第一行包含一个整数N( 2 ≤ N ≤ 10^5 )。 接下来的一行包含N个非负整数(小于10)。 再接下来的一行包含一个正整数Q( 2 ≤ Q ≤ 10^5 ),表示处理查询的个数。 后跟Q行,每行包含两个空格分隔的整数x和y。( 1 ≤x ≤ y ≤ N )
(数组中没有两个相邻的元素全为0)
Output
对每个查询,如果结果是偶数,输出'Even’, 否则输出’Odd’。
数组中没有两个相邻的元素全为0
Sample Input
33 2 721 22 3
Sample Output
OddEven
HINT
find(1,2) = 9, 是奇数
find(2,3) = 128, 是偶数
pow(a,b) = ab
Source
思路:题目就是求奇偶数,但是做的时候不用题目那个的find函数,直接进行判断就可以。这里有个坑就是2的0次是奇数。
代码:
#include<cstdio>
using namespace std;
int main()
{
int a[100005],n,q,x,y;
while(~scanf("%d",&n))
{
for(int i=1;i<=n;i++)scanf("%d",&a[i]);
scanf("%d",&q);
for(int i=0;i<q; i++)
{
scanf("%d%d",&x,&y);
if(a[x]%2==0)
{if(x+1<=y&&a[x+1]==0)printf("Odd\n");
else printf("Even\n");
}
else printf("Odd\n");
}
}
return 0;
}