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));
        }
    }
     
    细雨斜风作晓寒。淡烟疏柳媚晴滩。入淮清洛渐漫漫。 雪沫乳花浮午盏,蓼茸蒿笋试春盘。人间有味是清欢。
  • 相关阅读:
    定义类或对象
    CSS 超出的文字显示省略号(单行、多行)
    获取Json对象的长度以及判断json对象是否为空
    第三次作业附加
    八皇后问题解题报告(dfs
    STL学习笔记(不定期更新)
    寒假作业之三
    寒假作业之二(2)
    寒假作业之二(1)
    第一篇随笔居然是总结耶
  • 原文地址:https://www.cnblogs.com/cangT-Tlan/p/7995176.html
Copyright © 2011-2022 走看看