Codeforces Problem-25A IQ Test
- 从今天开始的日常题目(实时比赛题目除外)CF分数都在1200以上,本人要尽快摆脱newbie的头衔,正式进入“小学生级别”中,如果这些题目有更好的解决方法或者算法,或是有哪些理解不对的地方,还请各路大神指出!
基本思想:
这可以算是1200+级别的水题了。其实只需要判断每个数的奇偶性,把不一样的那个数的下标输出就行。本人开始的时候想着用个map容器或者开个数组解决,但实际上不需要这么麻烦:找一个基准,比如说单独统计偶数的个数,如果偶数的个数等于1,那就把偶数的下标输出,反之则输出奇数的下标,这个时候只需要设定两个下标指针,每次更新下标的位置就能解决问题。
AC代码:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
int even=0,i1,i2;
for (int i=1;i<=n;i++)
{
int z;
cin>>z;
if (z%2==0)
{
even++;
i1=i;
}
else
i2=i;
}
cout<<(even==1?i1:i2)<<endl;
return 0;
}