当前位置: 首页 > article >正文

c++三级(枚举问题)

菲波那契数列(2)

题目描述

菲波那契数列是指这样的数列: 数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。

给出一个正整数a,要求菲波那契数列中第a个数对1000取模的结果是多少。

输入格式

第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个正整数a(1≤a≤1000000)。

输出格式

n行,每行输出对应一个输入。输出应是一个正整数,为菲波那契数列中第a个数对1000取模得到的结果。

样例

样例输入

复制
4
5
2
19
1

样例输出

复制
5
1
181
1
#include<iostream>
#include<iomanip>
using namespace std;
int a[1000000];
int main()
{
	a[1] = 1;
	a[2] = 1;
	for(int i = 3;i<=1000000;i++)
	{
		a[i] = (a[i-1] + a[i-2])%1000;
	}
	int n;
	cin>>n;
	for(int i = 0;i<n;i++)
	{
		int b;
		cin>>b;
		cout<<a[b]<<endl;
	}
	return 0;
}

生理周期(电子学会考级)

题目描述

人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23天、28天和33天。 每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,智力周期的高峰,人会思维敏捷,精力容易高度集中。
因为三个周期的周长不同,所以通常三个周期的高峰不会落在同一天。对于每个人,我们想知道何时三个高峰落在同一天。
对于每个周期,我们会给出从当前年份的第一天开始,到出现高峰的天数(不一定是第一次高峰出现的时间)。
你的任务是给定一个从当年第一天开始数的天数,输出从给定时间开始(不包括给定时间)下一次三个高峰落在同一天的时间(距给定时间的天数)。
例如:给定时间为10,下次出现三个高峰同天的时间是12,则输出2(注意这里不是3)。

输入格式

一行,包含四个整数:p, e, i和d,相邻两个整数之间用单个空格隔开。 p, e, i分别表示体力、情感和智力高峰出现的时间(时间从当年的第一天开始计算)。d 是给定的时间,可能小于p, e, 或 i。 所有给定时间是非负的并且小于等于365, 所求的时间小于等于21252。

输出格式

一个整数,即从给定时间起,下一次三个高峰同天的时间(距离给定时间的天数)。

样例

样例输入

复制
4 5 6 7

样例输出

复制
16994
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{

	int p,e,i,d;
	cin>>p>>e>>i>>d;
	int tmp = d;
	while(true)
	{
		d++;
		if((d-p)%23==0 && (d-e)%28==0 && (d-i)%33==0)
		{
			cout<<d-tmp;
			break;
		}
	}
	return 0;
}

最接近的分数

题目描述

分母不超过 N 且 小于 A/B 的最大最简分数是多少?

输入格式

三个正整数N,A,B,相邻两个数之间用单个空格隔开。1 <= A < B < N <= 1000。

输出格式

两个正整数,分别是所求分数的分子和分母,中间用单个空格隔开。

样例

样例输入

复制
100 7 13

样例输出

复制
50 93
#include<iostream>
#include<iomanip>
using namespace std;
double m;
double max_value = -1;
int max_fm = -1;
int max_fz = -1;
bool ifzuijian(int a,int b);
int main()
{
	int n,a,b;
	cin>>n>>a>>b;
	m = 1.0*a/b;
	for(int fm = 1;fm<=n;fm++)
	{
		for(int fz = 1;fz<fm;fz++)
		{
			double v = 1.0*fz/fm;
			if(ifzuijian(fz,fm)==true && v<m)
			{
				if(v>max_value)
				{
					max_value = v;
					max_fz = fz;
					max_fm = fm;
				}
			}
		}
	}
	cout<<max_fz<<" "<<max_fm<<endl;
	
	return 0;
}
bool ifzuijian(int a,int b)
{
	for(int i = 2;i<=min(a,b);i++)
	{
		if(a%i==0 && b%i==0) return false;
	}
	return true;
}


http://www.kler.cn/a/586795.html

相关文章:

  • 普通enum和enum class的区别
  • Winfrom基础知识41-60
  • Uniapp 开发 App 端上架用户隐私协议实现指南
  • Halcon 和 opencv比有什么区别与优劣
  • python socket库详解
  • 【A2DP】深入解读A2DP中通用访问配置文件(GAP)的互操作性要求
  • 堆(Heap)和栈(Stack),这两者通常是指内存管理中两种不同的内存区域
  • 【Android】RuntimeShader 应用
  • 如何使用Jsoup提取商品信息:实战指南
  • Java Collection(3)——BinaryTree(二叉树)
  • std::merge和std::inplace_merge对比分析
  • 谷歌云服务器:服务器怎么安装???
  • 车载Android音频系统 AudioService
  • 京瓷初期的按职能划分的组织
  • PHP语言的开源贡献
  • python函数式编程
  • 003_快乐数
  • 软件测试之单元测试unittest库使用、参数化、unittestteport
  • vivado ooc与global区别
  • 观成科技:​加密C2框架Platypus流量分析