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

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;
}

相关文章:

  • 练习题:87
  • Go vs Rust vs C++ vs Python vs Java:谁主后端沉浮
  • Mybatis——基础操作、动态SQL
  • 【STM32】USART串口收发HEX数据包收发文本数据包
  • 2024年12月CCF-GESP编程能力等级认证C++编程三级真题解析
  • Vue前端项目部署到宝塔面板的详细过程
  • VSCode通过SSH免密远程登录Windows服务器
  • 搭建Spring Boot Admin监控系统
  • 【SpringBoot】最佳实践——JWT结合Redis实现双Token无感刷新
  • 写时拷贝技术
  • 第三周日志-周末看书(3)
  • 计算机组成原理常用的计数单位(性能指标的计算)持续更新
  • 02自动化测试常用函数
  • 多页pdf转长图
  • 《重新审视深度部分标签学习中的一致性正则化》2022年ICML论文精读
  • 寄生虫仿生算法:基于寄生虫特征的算法设计
  • c语言整理
  • 重塑音乐未来:张漾斌引领漫寻音乐的颠覆之旅
  • STL标准库
  • 外星人入侵-Python-三
  • 霍步刚任辽宁沈阳市委书记
  • 马上评|文玩字画竞拍轻松赚差价?严防这类新型传销
  • 苏轼“胡为适南海”?
  • 夜读丨读《汉书》一得
  • 黄仕忠丨戏曲文献研究之回顾与展望
  • 国台办:实现祖国完全统一是大势所趋、大义所在、民心所向