上车人数

真心感觉题目很好,除了数学思想,还有考察仔细读题了没(输入是a,n,题目描述是n,a)

题意:中文;

解析:

车站编号: 1 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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值