博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 2370 Convert Kilometers to Miles
阅读量:5308 次
发布时间:2019-06-14

本文共 1159 字,大约阅读时间需要 3 分钟。

题意 : 按照题目给定的规则将公里转化成英里,就是每个数都可以用斐波那契数列里的数表示,每个数都有一个编码,21可以表示成(1,0,0,0,0,0,0) ,13可以表示成(1,0,0,0,0,0),42可以表示成 (1,0,0,1,0,0,0,0),将这个数的编码的最后一位去掉,所以42就变成 (1,0,0,1,0,0,0),然后倒过来 (0,0,0,1,0,0,1),第四个和第7个是1,然后斐波那契中第四个和第七个数加起来就是26.

思路 : 这个题我一开始卡了很久,因为我实在不明白题目表达了什么意思,也不知道42为什么就可以表示成那样的,后来就算了一下,42等于34+8,正好是斐波那契中的第5个数和第8个数,所以就是(0,0,0,0,1,0,0,1),然后再倒过来就是题目中给的了,因为题目中还要再倒,所以自己做的时候就不用倒了。

#include 
#include
#include
using namespace std ;int fib[30] ,vis[30];void chart(){ fib[1] = 1 ; fib[2] = 2 ; for(int i = 3 ; i < 30 ; i++) fib[i] = fib[i-1]+fib[i-2] ;}int main(){ int n ,m; scanf("%d",&n) ; chart() ; while(n--) { scanf("%d",&m) ; memset(vis,0,sizeof(vis)) ; for(int i = 29 ; i >= 1 ; i--) { if(m <= 0) break ; if(fib[i] <= m) { m -= fib[i] ; vis[i] = 1 ; } } int ans = 0 ; for(int i = 2 ; i < 30 ; i++) ans += vis[i]*fib[i-1] ; printf("%d\n",ans) ; } return 0 ;}
View Code

 

 

转载于:https://www.cnblogs.com/luyingfeng/p/3630923.html

你可能感兴趣的文章
面对问题,如何去分析?(分析套路)
查看>>
Excel-逻辑函数
查看>>
面对问题,如何去分析?(日报问题)
查看>>
数据分析-业务知识
查看>>
nodejs vs python
查看>>
poj-1410 Intersection
查看>>
Java多线程基础(一)
查看>>
TCP粘包拆包问题
查看>>
Java中Runnable和Thread的区别
查看>>
SQL Server中利用正则表达式替换字符串
查看>>
POJ 1015 Jury Compromise(双塔dp)
查看>>
论三星输入法的好坏
查看>>
Linux 终端连接工具 XShell v6.0.01 企业便携版
查看>>
JS写一个简单日历
查看>>
LCA的两种求法
查看>>
Python 发 邮件
查看>>
mysql忘记密码的解决办法
查看>>
全面分析Java的垃圾回收机制2
查看>>
[Code Festival 2017 qual A] C: Palindromic Matrix
查看>>
修改博客园css样式
查看>>