codevs 2287 火车站
2024-08-24 12:06:40
2287 火车站
时间限制: 1 s
空间限制: 32000 KB
题目等级 : 钻石 Diamond
题目描述 Description
火车从始发站(称为第1站)开出,在始发站上车的人数为a,然后到达第2站,在第2站有人上、下车,但上、下车的人数相同,因此在第2站开出时(即在到达第3站之前)车上的人数保持为a人。从第3站起(包括第3站)上、下车的人数有一定的规律:上车的人数都是前两站上车人数之和,而下车人数等于上一站上车人数,一直到终点站的前一站(第n-1站),都满足此规律。现给出的条件是:共有N个车站,始发站上车的人数为a,最后一站下车的人数是m(全部下车)。试问从x站开出时车上的人数是多少?若无解输出“No answer.”(所有数据均在longint范围内)
输入描述 Input Description
a,n,m和x
输出描述 Output Description
x站开出时车上的人数
样例输入 Sample Input
1 6 7 3
样例输出 Sample Output
2
数据范围及提示 Data Size & Hint
无
分类标签 Tags
递推 数论
/*
好几个月之前做的一道题了,枚举+递推,超级恶心
*/
#include<iostream>
#include<cstdio>
using namespace std;
int a,n,m,x;
bool b;
struct node{int up,tot;}f[];
int main()
{
cin>>a>>n>>m>>x;
f[].up=a;f[].tot=a;
f[].tot=a;f[n].tot=m;
f[n].up=;
for(int k=;k<=m;k++)
{
f[].up=k;
for(int i=;i<n;i++)
{
f[i].up=f[i-].up+f[i-].up;
f[i].tot=f[i-].tot+f[i].up-f[i-].up;
}
if(f[n-].tot==m)
{
printf("%d",f[x].tot);
b=true;
return ;
}
}
if(!b)printf("No answer.\n");
return ;
} //第一次做的时候的代码:
#include<iostream>
#include<cstdio>
using namespace std;
int a,n,m,x;
bool b;
struct car
{
int up;
int down;
int tot;
}f[];
int main()
{
cin>>a>>n>>m>>x;
f[].up=a;
f[].tot=a;
f[].tot=a;
f[n].tot=m;
f[n].up=;
for(int k=;k<=m;k++)
{
f[].up=k;
for(int i=;i<n;i++)
{
f[i].up=f[i-].up+f[i-].up;//A
//f[i].down=f[i-1].up;B
//f[i].tot=f[i-1].tot+f[i].up-f[i].down;C
f[i].tot=f[i-].tot+f[i].up-f[i-].up;//D<--C(B)
}
if(f[n-].tot==m)
{
cout<<f[x].tot;
b=true;
return ;
}
}
if(!b)
cout<<"No answer.";
return ;
}
最新文章
- PHP 之 this self parent static 对比
- 获取datable中某行某列的数据
- Java中的Set, List, Map漫谈
- Java 编译报错:illegal character
- java进阶一之jdk8新特性
- 浅谈JavaBean,Entity Bean,Enterprise Bean等Bean以及POJO的含义
- virtualbox 创建com对象失败
- 【递归】Vijos P1114 FBI树(NOIP2004普及组第三题)
- 【从零学习Python】Ubuntu14.10下Python开发环境配置
- 利用Javamail接收QQ邮箱和Gmail邮箱(转)
- 【C语言探索之旅】 第一部分第四课第一章:变量的世界之内存那档事
- ios控件 UIImageView
- 深入解析Javascript异步编程
- Spring入门看这一篇就够了
- Java 高级开发必修知识---反射
- Nginx 减少磁盘读写次数
- Php基本类型学习
- python基本数据类型之字符串(五)
- Web开发笔记 #07# Swagger Editor
- 【大数据】基于Hadoop的HBase的安装(转)