作者:云梦泽
日期: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; }