庞国网英雄会之杨辉三角的变形

作者:云梦泽

日期:2013.11.15

地点:湖南 大学软件大楼211

心情:一般般

题目:

          1

     1   1  1

  1  2   3  2  1

1  3  6   7  6  3  1

以上三角形的数阵,第一行只有一个数1, 以下每行的每个数,是恰好是它上面的数,左上的数和右上数等3个数之和(如果不存在某个数,认为该数就是0)。

求第n行第一个偶数出现的位置。如果没有偶数,则输出-1。例如输入3,则输出2,输入4则输出3。

输入n(n <= 1000000000)

函数头部::  int run(int n);              C/C++:

思路:

分析规律即可

(1)第一行、第二行无偶数

(2)奇数行第一个偶数在2号位

(3)后面四行四行成第一个偶数位置规律,比如(3 4 5 6)(7 8 9 10)行,前面规律依然遵循,4—8—12—16......对应3号位,6 —10—14—18......等对应4号位,做模4处理,对于这两种数的余数然后拟线性取值即可

 

//云梦泽
//2013.11.11
#include<iostream>
using namespace std;
int run(int n)
{
	double IndexValue;
	if(n==1||n==2)
		IndexValue=-1;
	else if(n%2==1)
		IndexValue=2;
	else 
		IndexValue=0.5*(n%4)+3;
	return (int)IndexValue;
}
int main()
{
	int n=0,Index=0;
	cin>>n;
	Index=run(n);
	cout<<"第"<<n<<"行第一个偶数位置为: "<<Index<<endl;
}


 

你可能感兴趣的:(C++,算法,面试题,ACM)