【无标题】

第一节 时空复杂度的分析

一.时空复杂度的分析

1.时间复杂度

在计算机科学中,时间复杂性,又称时间复杂度,算法的时间复杂度是一个函数,它定性描述该算法的运行时间。这是一个代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。使用这种方式时,时间复杂度可被称为是渐近的,亦即考察输入值大小趋近无穷时的情况。

常见的时间复杂度:从小到大依次是:O(1)<O(logn)<O(n)<O(nlogn)<O(n^2)
<O(n^3)
<O(2^n)<O(n!)

1.O(1)

int a = 1;
int b= 1;
int c = a + b;

2.O(logn)、O(nlogn)

 int i = 1;
 int n = 10;
 while (i <= n)  {
   i = i * 2;
 }

3.O(m+n)、O(m*n)

int fun(int m, int n) {
  int s = 0;
  int i = 1;
  for (; i < m; ++i) {
    s = s + i;
  }

  int k = 0;
  int j = 1;
  for (; j < n; ++j) {
    k = k + j;
  }

  return s + k;
}

2.P8780 [蓝桥杯 2022 省 B] 刷题统计

小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天做 a 道题目,周六和周日每天做 b 道题目。请你帮小明计算,按照计划他将在第几天实现做题数大于等于 n 题?

输入格式
输入一行包含三个整数 a, b和 n.

输出格式
输出一个整数代表天数。

输入输出样例
输入
10 20 99
输出
8

#include<iostream>
using namespace std;
long long a,b,n,s,x,y;
int main()
{
	cin>>a>>b>>n;//周一至周五每天做a道题目,周六和周日每天做b道题目,目标做题数n 
    s=5*a+2*b;//一周的做题总数 
    x=n/s;//算出需要做几个整周 
    if(n/s*s==n)//判断做题总天数是不是整周 
    cout<<x*7;
    y=n-x*s;//不是整周减去整周部分,准备将剩余部分判断 
    if(y>5*a)//判断是否大于5天 
    {
    	if((y-5*a)>b)//判断是6天还是7天 
		cout<<x*7+7;
		else cout<<x*7+6; 
	}else if(y/a*a==y)//判断做题数是否恰好为a的倍数 
	{
		cout<<x*7+y/a;
	}else cout<<x*7+y/a+1;//若不是向后+1; 
	return 0;
	}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值