zoukankan      html  css  js  c++  java
  • 洛谷 P1591 阶乘数码

    题目描述

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

    输入输出格式

    输入格式:

     

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

     

    输出格式:

     

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

     

    输入输出样例

    输入样例#1: 复制
    2
    5 2
    7 0
    输出样例#1: 复制
    1
    2
    思路:高精度板子
    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    int t,n,m,ans;
    struct nond{
        int num[100000];
    }v[1010];
    void cheng(int pos,int num1[500]){
        for(int i=0;i<=num1[0];i++)
            v[pos].num[i]=num1[i];
        for(int i=1;i<=num1[0];i++)
            v[pos].num[i]*=pos;
        for(int i=1;i<=num1[0];i++)
            if(v[pos].num[i]>=10){
                if(i==num1[0])    num1[0]++;
                v[pos].num[i+1]+=v[pos].num[i]/10;
                v[pos].num[i]%=10;
            }
        for(;num1[0]>=1;num1[0]--)    if(v[pos].num[num1[0]]!=0)    break;
        v[pos].num[0]=num1[0];
    }
    int main(){
        scanf("%d",&t);
        while(t--){
            scanf("%d%d",&n,&m);
            for(int i=1;i<=n;i++)    v[i].num[0]=1,v[i].num[1]=1;
            for(int i=2;i<=n;i++)    cheng(i,v[i-1].num);
            for(int i=v[n].num[0];i>=1;i--)
                if(v[n].num[i]==m)    ans++;
            cout<<ans<<endl;ans=0;memset(v,0,sizeof(v));
        }
    }
     
    细雨斜风作晓寒。淡烟疏柳媚晴滩。入淮清洛渐漫漫。 雪沫乳花浮午盏,蓼茸蒿笋试春盘。人间有味是清欢。
  • 相关阅读:
    模板的导入和继承
    图解从 URL 到网页通信原理
    HTTP协议详细介绍
    django的模型层
    LeetCode3-Longest Substring Without Repeating Characters
    LeetCode2-Add Two Numbers
    LeetCode1-Two Sum
    面试干货整理
    VS中使用QT调用R脚本
    MFC DLL 资源模块句柄切换[转]
  • 原文地址:https://www.cnblogs.com/cangT-Tlan/p/7995176.html
Copyright © 2011-2022 走看看