《阶乘数码》

ops/2024/12/17 22:21:27/

题目描述

求 n!n! 中某个数码出现的次数。

输入格式

第一行为 t(t≤10)t(t≤10),表示数据组数。接下来 tt 行,每行一个正整数 n(n≤1000)n(n≤1000) 和数码 aa。

输出格式

对于每组数据,输出一个整数,表示 n!n! 中 aa 出现的次数。

输入输出样例

输入 #1复制

2
5 2
7 0

输出 #1复制

1
2

C语言代码实现:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// 高精度乘法,模拟大整数乘法过程
void multiply(int *arr, int *len, int num) {
    int carry = 0,i;
    for (i = 0; i < *len; i++) {
        int sum = arr[i] * num + carry;
        arr[i] = sum % 10;
        carry = sum / 10;
    }
    while (carry > 0) {
        arr[*len] = carry % 10;
        carry /= 10;
        (*len)++;
    }
}

// 计算n的阶乘,使用高精度存储结果
void factorial(int n, int *result, int *resultLen) {
    result[0] = 1;
    *resultLen = 1;
    int i;
    for (i = 2; i <= n; i++) {
        multiply(result, resultLen, i);
    }
}

int main() {
    int t,i,j,b[100000];
    scanf("%d", &t);
    for (i = 0; i < t; i++) {
        int n, a;
        scanf("%d %d", &n, &a);
        int result[3000] = {0};  // 足够大的数组用于存储高精度结果,可按需调整大小
        int resultLen;
        factorial(n, result, &resultLen);
        int count = 0;
        for (j = 0; j < resultLen; j++) {
            if (result[j] == a) {
                count++;
            }
        }
     b[i]=count;
    }
    for(i=0;i<t;i++)
    {
        printf("%d\n",b[i]);
    }

    return 0;
}


http://www.ppmy.cn/ops/142741.html

相关文章

视频动捕 视频生成3d学习笔记

目录 GVHMR&#xff1a;无需穿戴设备的全身动捕 GVHMR&#xff1a;无需穿戴设备的全身动捕 开源地址&#xff1a; https://github.com/zju3dv/GVHMR

CTFHub 命令注入-综合练习(学习记录)

综合过滤练习 命令分隔符的绕过姿势 ; %0a %0d & 那我们使用%0a试试&#xff0c;发现ls命令被成功执行 /?ip127.0.0.1%0als 发现一个名为flag_is_here的文件夹和index.php的文件&#xff0c;那么我们还是使用cd命令进入到文件夹下 http://challenge-438c1c1fb670566b.sa…

《自制编译器》--青木峰郎 -读书笔记 编译hello

在该书刚开始编译hello.cb时就遇到了问题。 本人用的是wsl&#xff0c;环境如下&#xff0c; 由于是64位&#xff0c;因此根据书中的提示&#xff0c;从git上下载了64位的cb编译器 cbc-64bit 问题一: 通过如下命令编译时,总是报错。 cbc -Wa,"--32" -Wl,"-…

111.【C语言】数据结构之二叉树的销毁函数

目录 1.知识回顾 2.分析 3.代码 后序遍历销毁(最简洁) 前序遍历销毁(不推荐) 中序遍历销毁(不推荐) 4.将函数嵌入main函数中执行 1.知识回顾 106.【C语言】数据结构之二叉树的三种递归遍历方式 2.分析 销毁二叉树需要按照一定的顺序去销毁,例如:先销毁根还是先销毁根…

D99【python 接口自动化学习】- pytest进阶之fixture用法

day99 pytest使用conftest管理fixture 学习日期&#xff1a;20241216 学习目标&#xff1a;pytest基础用法 -- pytest使用conftest管理fixture 学习笔记&#xff1a; fixture(scope"function") conftest.py为固定写法&#xff0c;不可修改名字&#xff0c;使用c…

.NET平台使用C#设置Excel单元格数值格式

设置Excel单元格的数字格式是创建、修改和格式化Excel文档的关键步骤之一&#xff0c;它不仅确保了数据的正确表示&#xff0c;还能够增强数据的可读性和专业性。正确的数字格式可以帮助用户更直观地理解数值的意义&#xff0c;减少误解&#xff0c;并且对于自动化报告生成、财…

wxwidgets xml插入图片的两种方案

wxwidgets xml插入图片的两种方案: 1.使用wxWidgets中的wxRichTextCtrl插入图片,将wxRichTextCtrl的buffer导出为xml文件 参考richtextctrl例子 if (wxTheClipboard->IsSupported(wxDF_BITMAP)){wxBitmapDataObject data;wxTheClipboard->GetData(data);wxBitmap bi…

【Linux】常用Linux命令大全(持续更新)

前言 汇总常用linux命令及用法&#xff0c;方便大家在日常工作中操作linux的便捷性 一、top命令 top 是一个在 Linux 系统上常用的实时系统监控工具。它提供了一个动态的、交互式的实时视图&#xff0c;显示系统的整体性能信息以及正在运行的进程的相关信息    在键入top命令…