XTU OJ 1375 Fibonacci
XTU OJ 1375 Fibonacci
题目描述
小明非常喜欢FibonacciFibonacciFibonacci数列,数列为 f1=1,f2=2,fn=fn−1+fn−2f_1=1,f_2=2,f_n=f_n{−}_1+f_n−_2f1=1,f2=2,fn=fn−1+fn−2。 小明想知道对于一个整数nnn,使得n=fi+fj+fkn=f_i+f_j+f_kn=fi+fj+fk的组合有多少种? 比如5=1+1+35=1+1+35=1+1+3 或者 5=1+2+25=1+2+25=1+2+2,有2种。注意 1+2+21+2+21+2+2 和 2+1+22+1+22+1+2 被认为是同一种。
输入
第一行是一个整数1≤T≤1000)1≤T≤1000)1≤T≤1000),表示样例的个数。
每个样例是一个整数n(3≤n≤109)n(3≤n≤109)n(3≤n≤109)。
输出
依次每行输出一个样例的结果,为一个整数。
样例输入
2
3
5
样例输出
1
2
题解:换了一个思路来写,思路就都写在代码注释里了
// 基本思路:
// 1、先将斐波那契数列制表;
// 2、找出所有相加可以等于n的组合,将他们存入二维数组,然后排序
// 3、每次数组有新元素进来都将它们与数组内原有的进行比较,发现有重复这组新元素就跳过,否则就cnt++
#include <stdio.h>void sort(int num[]){//排序函数int i, j;for(i = 0; i < 2; i++){//选择排序for(j = i + 1; j <= 2; j++){if(num[i] < num[j]){int temp = num[i];num[i] = num[j];num[j] = temp;}}}
}
int cmp(int a[], int b[]){//比较两数组的函数int i, flag = 0;for(i = 0; i <= 2; i++){if (a[i] != b[i]) {flag = 1;break;}}return flag;
}int main(){int T;int n;scanf("%d", &T);while (T--){scanf("%d", &n);int i, j, k, cnt = 0;int t = 0, u;int f[45] = {0}, s[1000][3] = {0};f[1] = f[2] = 1;//这里我是从1开始的for (i = 3; i < 45; i++){//斐波那契数列打表,只打到44是因为第44个: 1134903170,第45个: 1836311903,而题目要求n < 10 ^ 9f[i] = f[i - 1] + f[i - 2];}for (i = 1; i < 45; i++){if (f[i] > n) break;for (j = 1; j < 45; j++){for (k = 1; k < 45; k++){if (f[i] + f[j] + f[k] == n) {t++;s[t][0] = f[i], s[t][1] = f[j], s[t][2] = f[k];//将f[i], f[j], f[k]存入数组sort(s[t]);//排序for(u = 1; u < t; u++){if (cmp(s[t], s[u]) == 0) goto next;//遇到和之前相同的就跳出}cnt++;next: ;}}}}printf("%d\n", cnt);}return 0;
}
XTU OJ 1375 Fibonacci相关推荐
- xtu oj 1375斐波纳契
题目描述 小明非常喜欢斐波纳契数列,数列为f1=1,f2=2,fn=fn−1+fn−2.小明想知道对于一个整数n,使得n=fi+fj+fk的组合有多少种?比如5=1+1+3或者5=1+2+2,有2种. ...
- XTU OJ 1324 Hash
XTU OJ 1324 Hash Hash 题目描述 H a s h Hash Hash是一种很常用的数据结构,Hash技术的关键在于Hash函数的选取. 一种常用整数的 H a s h Hash H ...
- XTU OJ 1355 Euler‘s Totient Function(欧拉函数)
XTU OJ 1355 Euler's Totient Function(欧拉函数) 题目描述 对于整数n,定义ϕ(n)ϕ(n)ϕ(n)为小于或等于n,并与n互质的整数的个数,比如6,比它小的和它互质 ...
- 九度OJ 1375 陈博的完美主义 (枚举,细心细心)
题目1375:陈博的完美主义(25分) 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1158 解决:287 题目描述: 上一回合大家都知道,在JOBDU团队里,陈博是最讲平均主义的人,对 ...
- 质因数分解唯一定理(XTU OJ)
今年的oj 很有几道题用到了,这里介绍一下 质因数分解(唯一分解定理) 基本概念: 每个合数都可以写成几个质数相乘的形式,其中每个质数都是这个合数的因数,叫做这个合数的分解质因数. 分解质因数只针对合 ...
- XTU Oj 128
Rotate 题目描述 一个4×4的矩阵,我们可以把矩阵看成内外两圈,我们可以把外圈按顺时钟或者逆时钟转动,每次转动90度. 我们想得到一个2×2的子矩阵,使得这个子矩阵4个元素的累加和最大.请问最大 ...
- XTU OJ 1359 字符频度
淦啊,好久不写memset都忘记怎么写了,调了半天QAQ #include<stdio.h> #include<string.h> char a[1005]; int alp[ ...
- XTU—OJ 1258矩阵
矩阵 题目描述 编写一个程序,将1~n2按行依次填入n×n的矩阵,执行若干条行或者列的循环移动的指令,再将数字按行依次取出. 指令如下: 指令 含义 L x y x行循环左移y次 R x y x行循环 ...
- XTU OJ 1397 Patchouli的金字塔
题目描述 Patchouli想要绘制一个金字塔.金字塔的图案由n个正三角形和倒三角形堆叠而成,具体的绘制方法如下: 每个三角形由*,/,\和-组成,分别代表三角形的顶点和三条边. 第一行只包含一个正三 ...
最新文章
- 曲线学习PyQt5方案一
- caffeine_使用Caffeine和Spring Boot的多个缓存配置
- eclipse打开jar包出现乱码问题解决方法
- 数据中心支持物联网的5种方式
- 【机器学习】太强了!这个建模神器可以玩一辈子
- linux 进sqlplus命令,linux下的sqlplus命令
- 开源一个爬取redmine数据的测试报告系统
- ubuntu11.04下CUDA4.0的安装与配置
- Pick!闲鱼亿级商品库中的秒级实时选品
- 飞鸽传书下载,还是飞鸽传书下载
- 普通路由器改4g路由器_4G宽带随心用,办公娱乐更自由,蒲公英X4C路由器体验|路由器|蒲公英|宽带|wifi|sim...
- React 路由 中 BrowserHistory 刷新报404
- 移动路由器做网站服务器,移动路由器上网方式选哪个?
- Reason Studios Reason 12 v12.2.5 WiN 音乐制作软件和机架插件
- 随机变量与随机过程详解
- JAVA简单的控制台模拟斗地主
- 复利的谎言,很多人都中圈套了!!
- 量化交易之vnpy篇 - 几种同步发单模式(中金所股指锁仓模式、最小单边轧差操作模式、双边同步模式,净头寸模式)
- 330+地级市GDP以及一二三产业增加值数据(1995-2020)
- 国家的崛起,无法建立局域网连接
热门文章
- rk3288-linux6.0移植
- 为什么你的蓝牙耳机总是出毛病,不好好反思一下这些问题吗?
- 使用D2RQ转换关系型数据库Mysql数据为RDF
- 暗影精灵双系统(win10和Ubuntu16.04)安装+Cuda和tensorflow安装-深度学习环境配置
- 小型数控雕刻机制作Arduino_基于Arduino DIY的激光雕刻机
- SVG互动排版公众号图文 『两次物体移动与展开长图』 模板代码
- 傻子都能看懂的SVM
- 3 个简单的技巧让你的 vue.js 代码更优雅!
- 第二类换元法倒代换专项训练
- flex布局HTML实例,Flex常见布局实例