题目
以上三角形的数阵,第一行只有一个数1,以下每行的每个数,是恰好是它上面的数、左上角数和右上角的数,3个数之和(如果不存在某个数,认为该数就是0)。
求第n行第一个偶数出现的位置。如果没有偶数,则输出-1。例如输入3,则输出2,输入4则输出3,输入2则输出-1。
数据范围: 1 ≤ n ≤10^9
输入描述:
输入一个int整数
输出描述:
输出返回的int值
示例1
输入:
4
输出:
3
解题思路
写几行就可以发现规律:
//n==1或2时,没有偶数,cout<<-1;
//n==3时,index=2;
//n==4,index=3;
//n==5,index=2;
//n==6,index=4;
//n==7,index=2;
//n==8,index=3;
//n==9,index=2;
//n==10,index=4;
......
可以发现,index=2,3,2,4重复出现,将n对4取余,可以发现如下规律:
//n%4==3||n%4==1,index==2;
//n%4==0,index=3;
//n%4==2,index=4;
代码
#include<iostream>
using namespace std;
int func(int n){
if(n <= 2) return -1;
if(n % 4 == 0) return 3;
else if(n % 4 == 2) return 4;
else return 2;
}
int main(){
int n;
cin >> n;
cout << func(n) << endl;
return 0;
}