C/C++每日一练(20230302)

news2024/9/25 21:27:11

目录

1. 个位数是6,且能被3整除的五位数共有多少个?  ☆

2. 不同方式求n的阶乘  ★

3. 报数游戏  ★☆


1. 个位数是6,且能被3整除的五位数共有多少个?

答案: 3000 ,代码略


2. 不同方式求n的阶乘

求n的阶乘(用三种不同的循环实现,提示:先从键盘输入n的值)while、do while和for

代码:

#include <stdio.h>

int main(void) { 
    int n;
    printf("请输入n的值:");
    scanf("%d",&n);
    int temp=n,sum=1;
    while(temp>1){
        sum*=temp;
        temp--;
    }
    printf("%d的阶乘是%d\n",n,sum);
    
    temp=n;
    sum=1;
    do{
        sum*=temp;
        temp--;
    }while(temp>1);
    printf("%d的阶乘是%d\n",n,sum);
    
    temp=n;
    sum=1;
    for(;temp>1;temp--){
        sum*=temp;;
    }
    printf("%d的阶乘是%d\n",n,sum);
    
    return 0;
}

输入输出:

请输入n的值:6
6的阶乘是720
6的阶乘是720
6的阶乘是720 


3. 报数游戏

题目描述
首先,会给他们一人一个编号,并且每个人的编号都不相同。接下来的每一回合,会给一个数,编号超过它的最小编号的人要报出自己的编号。如果没有人的编号比给出的数要大,那么编号最大的人要报出自己的编号。每个人可以重复报号。 会按照一个列表顺次报出每个回合的数,朋友们想知道每回合报出的编号应该是多少。 

输入
输入数据共 3 行。
第一行有两个整数 n,m(1≤n≤100,000,1≤m≤100,000),分别表示参与游戏的朋友的个数,和游戏的回合数。
第二行 n个整数 ai(1≤ai≤100,000,000),表示朋友们每个人的编号。对于 0≤i<j<n,都有 ai<aj,即他们的编号递增排列。
第三行 m 个整数 qi(1≤qi≤100,000,000),表示每回合给的数字。 

输出
输出共一行 m 个整数,表示每回合报出的编号,每两个整数之间一个空格,最后一个数后面没有空格。

代码:

#include <iostream>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;
int ai[100010], qi[100010];
int main()
{
    int a, q;
    while (cin >> a >> q)
    {
        for (int i = 0; i < a; i++)
            cin >> ai[i];
        for (int i = 0; i < q; i++)
            cin >> qi[i];
        for (int i = 0; i < q; i++)
        {
            int left = 0, right = a - 1, mid;
            while (left < right)
            {
                mid = (left + right) >> 1;
                if (ai[mid] <= qi[i])
                    left = mid + 1;
                else
                    right = mid;
            }
            if (left - 1 < 0 || ai[left] < qi[i])
				left++;
            i ? cout << " " << ai[left - 1] : cout << ai[left - 1];
        }
        cout << endl;
    }
    return 0;
}

扩展阅读

阶乘

一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!。1808年,基斯顿·卡曼(Christian Kramp,1760~1826)于 1808 年首用!这个表示法。

 递归法求阶乘

int factorial(int num)
{
    if (num == 0)
        return 1;
    else
        return num * factorial(num - 1);
}

阶乘数

是一种有着特殊规律、每位以阶乘为权的数字。abcd=a*a!+b*b!+c*c!+d*d!

阶乘数的值等于各个位上数字乘以其阶乘数之和。因为0-9的数字的阶乘值不会特别大,所以阶乘数也有上限。可以用穷举法求,很方便的。

求n!的位数

方法一
可以将n!表示成10的次幂,即n!=10^M(10的M次方)则不小于M的最小整数就是 n!的位数,对该式两边取对数,有 M =log10^n!
即:
M = log10^1+log10^2+log10^3...+log10^n
循环求和,就能算得M值,该M是n!的精确位数
 
方法二
利用斯特林(Stirling)公式的进行求解。下面是推导得到的公式:
res=(long)( (log10(sqrt(4.0*acos(0.0)*n)) + n*(log10(n)-log10(exp(1.0)))) + 1 );
当n=1的时候,上面的公式不适用,所以要单独处理n=1的情况!
有关斯特林(Stirling)公式及其相关推导,这里就不进行详细描述,
这种方法速度很快就可以得到结果。

求n!末尾0的个数

思路:
一个数 n 的阶乘末尾有多少个 0 取决于从 1 到 n 的各个数的因子中 2 和 5 的个数
而 2 的个数是远远多余 5 的个数的, 因此求出 5 的个数即可
题解中给出的求解因子 5 的个数的方法是用 n 不断除以 5, 直到结果为 0
然后把中间得到的结果累加. 例如, 100/5 = 20, 20/5 = 4, 4/5 = 0
则 1 到 100 中因子 5 的个数为 (20 + 4 + 0) = 24 个
即 100 的阶乘末尾有 24 个 0. 其实不断除以 5
是因为每间隔 5 个数有一个数可以被 5 整除, 然后在这些可被 5 整除的数中
每间隔 5 个数又有一个可以被 25 整除, 故要再除一次, ... 直到结果为 0, 表示没有能继续被 5 整除的数了。

广义阶乘

阶乘的定义范围已从正整数拓展到复数,真正严谨的阶乘定义应该为:对于数n,所有绝对值小于或等于n的同余数之积。称之为n的阶乘,即n! ,对于复数应该是指所有模n小于或等于│n│的同余数之积。
说明:复数阶乘存在路径问题,路径不同阶乘的结果就不相同,幅角a相等是指按直线从0点附近到z,不等时是按曲线取阶乘。复数阶乘存在方向问题,就是说它是有方向的量。广义阶乘涵括正负实数阶乘。

 双阶乘

用m!!表示,两个感叹号

注:扩展阅读内容摘自百度百科 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/382302.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

sdwan方案有哪些 SD-WAN怎么搭建

随着sdwan网络架构的形成到目前的广泛应用到各行业之中&#xff0c;足见sdwan方案已经逐步的走向成熟。sdwan软件定义网络可在包括公共Internet&#xff0c;MPLS和宽带在内的标准网络传输服务上运行&#xff0c;解决了很多跨区域之间网络传输数据的难题。那么&#xff0c;sdwan…

软件测试4

一 form表单标签 1.form表单标签里面就是所有用户填写的表单数据&#xff1b; action“xxx.py”把表单数据提交给哪一个后台程序去处理 method“post” 传递数据时候的方式方法&#xff0c;post代表隐式提交数据、get明文传送数据 2.input标签的type类型 type“text” 普通的输…

优思学院|解密六西格玛:探索DMAIC和DMADV之间的区别

六西格玛方法中最为广泛使用的两种方法是DMAIC和DMADV。这两种方法都是为了让企业流程更加高效和有效而设计的。虽然这两种方法有一些重要的共同特点&#xff0c;但它们并不可以互相替代&#xff0c;并且被开发用于不同的企业流程。在更详细地比较这两种方法之前&#xff0c;我…

扬帆优配|突发利空,千亿巨头重挫!凭“一己之力”

马斯克效应持续凸显&#xff0c;稀土永磁板块早盘大跌&#xff0c;千亿市值的北方稀土跌超4%。 近来&#xff0c;马斯克凭“一己之力”带火A股卫星互联网、毫米波雷达两大概念板块&#xff0c;多只相关个股闻风大涨。 今日&#xff0c;马斯克效应在A股再度应验。在当地时间3月…

功能测试前还需要做哪些准备?

概述 在项目管理流程中&#xff0c;有几个关键阶段&#xff1a; 需求阶段 开发阶段 测试阶段 上线阶段 其中的需求阶段和开发阶段是最为重要的&#xff0c;一个是设计&#xff0c;定义这个功能如何运作&#xff0c;一个是执行与实现&#xff0c;这两个阶段把控好了&#…

从安卓系统USB升级包里提取system.img、boot.img和recovery.img在内的镜像文件

1.前言 如果你拿到一个USB升级包&#xff0c;你会发现升级包的结构基本相似。 但是里面并不是直接就有包括system.img、boot.img和recovery.img在内的镜像文件。 如果我们需要在Android手机上获取Magisk。提取内核&#xff08;boot.img&#xff09;就至关重要。当然其他镜像根…

不能去演唱会现场就多听听耳机里的他们,教你用python来实现一个音乐播放器

前言 最近可以说大麦网很知名了&#xff0c;哈哈还有好多想要用Python来搞抢票脚本的 怎么说呢也不是不行&#xff0c;但是咱今天可不是来搞这个的&#xff0c;我可不抢票&#xff0c;抢了都去不了&#xff0c;上班搞钱啊铁铁们 咱就是说去不了现场&#xff0c;就多听听手机…

实例分割 mask loss异常值,训练过程报错 debug记录

实例分割包含了目标检测,和检测框里的语义分割。 在搭建好一个模型后,训练过程中遇到了mask loss异常值,目标框消失不见,validation过程报错的情况,这里记录一下对这些问题的分析过程和debug记录。 首先分析一下mask loss异常值的问题。 mask loss用的是BCE loss。 mask…

dva( 轻量级的应用框架 )

dva核心知识与实战运用 dva 首先是一个基于 redux 和 redux-saga 的数据流方案&#xff0c;然后为了简化开发体验&#xff0c;dva 还额外内置了 react-router 和 fetch&#xff0c;所以也可以理解为一个轻量级的应用框架! 介绍 | DvaJS 易学易用&#xff0c;仅有 6 个 api&…

易基因-MeRIP-seq揭示衰老和神经变性过程中m6A RNA甲基化修饰的保守下调机制

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。2023年02月22日&#xff0c;《美国国家科学院院刊》(Proc Natl Acad Sci USA)期刊发表了题为“Conserved reduction of m6A RNA modifications during aging and neurodegeneration is lin…

机器学习:学习KMeans算法,了解模型创建、使用模型及模型评价

机器学习&#xff1a;学习KMeans算法&#xff0c;了解模型创建、使用模型及模型评价 作者&#xff1a;AOAIYI 作者简介&#xff1a;Python领域新星作者、多项比赛获奖者&#xff1a;AOAIYI首页 &#x1f60a;&#x1f60a;&#x1f60a;如果觉得文章不错或能帮助到你学习&#…

android 动态加载jar包

什么时候需要用到动态加载jar包呢&#xff1f; 减少apk本身大小&#xff0c;某些界面才需要用jar里的功能jar中的功能可以独立开发&#xff0c;不要依赖其它的东西&#xff0c;能适用各个项目和第三方公司合作&#xff0c;人家不提供项目源码给你&#xff0c;但又要开发他们使…

MySQL workbench的基本操作

1. 创建新的连接 hostname主机名输入“local host”和“127.0.0.1”效果是一样的&#xff0c;指的是本地的服务器。 需要注意的是&#xff0c;此处的密码在安装软件的时候已经设定。 点击【Test Connection】&#xff0c;测试连接是否成功。 创建完的连接可以通过&#xff0c…

汇编指令学习(ADD,SUB,MUL,DIV,XADD,INC,DEC,NEG)

一、ADD加法操作指令将eax置1&#xff0c;ebx置2&#xff0c;运行下面命令&#xff0c;将结果保存到eaxadd eax,ebx扩展&#xff1a;adc需要再加上CF标志位的值adc eax&#xff0c;ebx二、SUB减法操作指令将eax置3&#xff0c;ebx置2&#xff0c;运行下面命令&#xff0c;将结果…

java异常分类和finally代码块中return语句的影响

首先看一下java中异常相关类的继承关系&#xff1a; 引用 1、分类 异常可以分为受查异常和非受查异常&#xff0c;Error和RuntimeException及其所有的子类都是非受查异常&#xff0c;其他的是受查异常。 两者的区别主要在&#xff1a; 受检的异常是由编译器&#xff08;编译…

CUDA环境搭建(windows10)

CUDA环境搭建[windows10]一、检查显卡支持的cuda版本二、安装vs2019三、安装cuda四、检测cuda是否安装成功五、配置vs项目总结&#xff1a;一、检查显卡支持的cuda版本 &#xff08;1&#xff09;第一种方法&#xff1a;winR打开cmd&#xff0c;输入nvidia-smi&#xff0c;我的…

常用的shell脚步操作

文章目录一、如何开始一个shell脚本?1.基本语法2.变量定义规则二、特色变量1.$n2.$&#xff1f;三、条件判断1&#xff0e;基本语法2.运算符if,for,while四、字符串切割1.从指定位置开始截取从字符串左边开始计数从右边开始计数2.从指定字符&#xff08;子字符串&#xff09;开…

【MySQL】查询操作(基础篇)

目录 1、查询操作(Retrieve) 1.1 全列查询 1.2 指定列查询 1.3 查询字段为表达式 1.4 别名 1.5 去重&#xff1a;DISTINCT 1.6 排序&#xff1a;ORDER BY 1.7 条件查询&#xff1a;WHERE 1.8 分页查询 1、查询操作(Retrieve) 查询操作算的上是 SQL 中最复杂的操作了…

Orcad导出BOM的两种方式比较

两种方法&#xff0c;各有优缺点。推荐使用第二种。一、Capture CIS特有的导BOM方式&#xff0c;用Capture 就没有这个选项点击Stanard,然后可以在左框中select ,add进右边的框&#xff0c;这样导就会导出你想要的属性&#xff0c;同时右下方有个Key选项&#xff0c;你选择outp…

适用于电脑的 5 款免费好用的 PDF 阅读器

PDF 阅读器是任何可以打开PDF 文件的软件&#xff0c;它可能是世界上最知名的文档格式。您可下载的银行对账单、学校的时事通讯——它们可能都是 PDF 格式的。 越来越多的操作系统、智能手机和其他设备包含显示 PDF 文件的内置功能&#xff1b;甚至您的网络浏览器也可能处理它…