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相关推荐

  1. 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种. ...

  2. XTU OJ 1324 Hash

    XTU OJ 1324 Hash Hash 题目描述 H a s h Hash Hash是一种很常用的数据结构,Hash技术的关键在于Hash函数的选取. 一种常用整数的 H a s h Hash H ...

  3. XTU OJ 1355 Euler‘s Totient Function(欧拉函数)

    XTU OJ 1355 Euler's Totient Function(欧拉函数) 题目描述 对于整数n,定义ϕ(n)ϕ(n)ϕ(n)为小于或等于n,并与n互质的整数的个数,比如6,比它小的和它互质 ...

  4. 九度OJ 1375 陈博的完美主义 (枚举,细心细心)

    题目1375:陈博的完美主义(25分) 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1158 解决:287 题目描述: 上一回合大家都知道,在JOBDU团队里,陈博是最讲平均主义的人,对 ...

  5. 质因数分解唯一定理(XTU OJ)

    今年的oj 很有几道题用到了,这里介绍一下 质因数分解(唯一分解定理) 基本概念: 每个合数都可以写成几个质数相乘的形式,其中每个质数都是这个合数的因数,叫做这个合数的分解质因数. 分解质因数只针对合 ...

  6. XTU Oj 128

    Rotate 题目描述 一个4×4的矩阵,我们可以把矩阵看成内外两圈,我们可以把外圈按顺时钟或者逆时钟转动,每次转动90度. 我们想得到一个2×2的子矩阵,使得这个子矩阵4个元素的累加和最大.请问最大 ...

  7. XTU OJ 1359 字符频度

    淦啊,好久不写memset都忘记怎么写了,调了半天QAQ #include<stdio.h> #include<string.h> char a[1005]; int alp[ ...

  8. XTU—OJ 1258矩阵

    矩阵 题目描述 编写一个程序,将1~n2按行依次填入n×n的矩阵,执行若干条行或者列的循环移动的指令,再将数字按行依次取出. 指令如下: 指令 含义 L x y x行循环左移y次 R x y x行循环 ...

  9. XTU OJ 1397 Patchouli的金字塔

    题目描述 Patchouli想要绘制一个金字塔.金字塔的图案由n个正三角形和倒三角形堆叠而成,具体的绘制方法如下: 每个三角形由*,/,\和-组成,分别代表三角形的顶点和三条边. 第一行只包含一个正三 ...

最新文章

  1. 曲线学习PyQt5方案一
  2. caffeine_使用Caffeine和Spring Boot的多个缓存配置
  3. eclipse打开jar包出现乱码问题解决方法
  4. 数据中心支持物联网的5种方式
  5. 【机器学习】太强了!这个建模神器可以玩一辈子
  6. linux 进sqlplus命令,linux下的sqlplus命令
  7. 开源一个爬取redmine数据的测试报告系统
  8. ubuntu11.04下CUDA4.0的安装与配置
  9. Pick!闲鱼亿级商品库中的秒级实时选品
  10. 飞鸽传书下载,还是飞鸽传书下载
  11. 普通路由器改4g路由器_4G宽带随心用,办公娱乐更自由,蒲公英X4C路由器体验|路由器|蒲公英|宽带|wifi|sim...
  12. React 路由 中 BrowserHistory 刷新报404
  13. 移动路由器做网站服务器,移动路由器上网方式选哪个?
  14. Reason Studios Reason 12 v12.2.5 WiN 音乐制作软件和机架插件
  15. 随机变量与随机过程详解
  16. JAVA简单的控制台模拟斗地主
  17. 复利的谎言,很多人都中圈套了!!
  18. 量化交易之vnpy篇 - 几种同步发单模式(中金所股指锁仓模式、最小单边轧差操作模式、双边同步模式,净头寸模式)
  19. 330+地级市GDP以及一二三产业增加值数据(1995-2020)
  20. 国家的崛起,无法建立局域网连接

热门文章

  1. rk3288-linux6.0移植
  2. 为什么你的蓝牙耳机总是出毛病,不好好反思一下这些问题吗?
  3. 使用D2RQ转换关系型数据库Mysql数据为RDF
  4. 暗影精灵双系统(win10和Ubuntu16.04)安装+Cuda和tensorflow安装-深度学习环境配置
  5. 小型数控雕刻机制作Arduino_基于Arduino DIY的激光雕刻机
  6. SVG互动排版公众号图文 『两次物体移动与展开长图』 模板代码
  7. 傻子都能看懂的SVM
  8. 3 个简单的技巧让你的 vue.js 代码更优雅!
  9. 第二类换元法倒代换专项训练
  10. flex布局HTML实例,Flex常见布局实例