真心感觉题目很好,除了数学思想,还有考察仔细读题了没(输入是a,n,题目描述是n,a)
题意:中文;
解析:
车站编号: 1 2 3 4 5 6 7
上车人数 a b a + b a + 2*b 2*a+3*b 3*a+5*b ......
下车人数 0 b b a + b a+2*b 2*a+3*b ......
剩下的人数 a a 2 * a 2*a + b 3*a+2*b 4*a+4*b ......
用表易得:上车人数=fib( n - 3 ] + fib( n - 2 ) == m;
剩下的人数=( fib( x - 2 ) + 1 ) *a + (fib( x - 1 ) + 1 ) * b;
// 上车人数.cpp : 定义控制台应用程序的入口点。
//
//#include "stdafx.h"
#include<iostream>
#include<cstdio>
using namespace std;
const int maxn = 1005;
int num[ maxn ], fib[ maxn ];
//int _tmain(int argc, _TCHAR* argv[])
int main()
{
int n, a, m, x, b;
fib[ 0 ] = 0;
fib[ 1 ] = 1;
for( int i = 2; i < maxn; ++i )
fib[ i ] = fib[ i - 1 ] + fib[ i - 2 ];
while( cin >> a >> n >> m >> x ){
// m = ( fib[ i - 2 ] + 1 ) * a + ( fib[ i - 1 ] - 1 ) * b;
b = ( m - ( fib[ n - 3 ] + 1 ) * a ) / ( fib[ n - 2 ] - 1 );
long long ans = ( fib[ x - 2 ] + 1 ) * a + ( fib[ x - 1 ] - 1 ) * b;
cout << ans << endl;
}
return 0;
}