求助,7个点re,3个点wa

P1591 阶乘数码

F_oR_es_T @ 2022-07-28 09:52:22

代码如下```

头文件没全用上,就是习惯都写上


#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <string>
#include <cstring>
#include <sstream>
using namespace std;
#define endl "\n"
int charToInt(char c){
    int k=c-'0';
    return k;
}
char intToChar(int k){
    char c=k+'0';
    return c;
}
int cc[1001];
string product(string s1,string s2){
    int m=s1.size(),n=s2.length();
    memset(cc,0,sizeof(cc));
    for(int j=n-1;j>=0;j--){
        for(int i=m-1;i>=0;i--){
            int a=charToInt(s1[i]);
            int b=charToInt(s2[j]);
            int temp=a*b;
            temp+=cc[i+j+1];
            cc[i+j+1]=temp%10;
            cc[i+j]+=temp/10;
        }
    }
    stringstream ss;
    for(int i=0;i<m+n;i++){
        if(ss.str().size()==0&&cc[i]==0){
            continue;
        }else{
            ss<<cc[i];
        }
    }
    return ss.str().size()==0?"0":ss.str();
}
string intToStr(int k){
    stringstream ss;
    ss<<k;
    return ss.str();
}
string fac(int n){
    if(n==1){
        return "1";
    }else{
        string facNjian1=fac(n-1);
        string nn=intToStr(n);
        return product(nn,facNjian1);
    }
}
int main(){
    int a,m;
    cin>>a;
    char n;
    int g[100]={};
    int s=0;
    for(int i=0;i<a;i++){
        cin>>m>>n;
        string z=fac(m);
        int w=z.length();
        int sum=0;
        for(int j=0;j<w;j++){
            if(z[j]==n){
            sum++;
            }
        }
        g[s]=sum;
        s++;
    }
    for(int i=0;i<a;i++){
        cout<<g[i]<<endl;
    }
    return 0;
}

|