求助P1591全wa 0分
  • 板块P1591 阶乘数码
  • 楼主hunj
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/8/28 20:10
  • 上次更新2024/8/28 21:56:55
查看原帖
求助P1591全wa 0分
728583
hunj楼主2024/8/28 20:10
#include<bits/stdc++.h>
using namespace std;
//定义数组a,b,c 
int a[10005];
int b[10005];
int c[10005];
int main(){
	int t;
	cin>>t;
	int n,aa;
	for(int p=1;p<=t;++p){
		//p组数据 
		cin>>n>>aa;
		string jc="1";
		for(int i=1;i<=n;++i){
			//转入字符串s 
			int k=i;
			string s="";
			while(k>0){
				int x=k%10;
				char ch=k+'0';
				s=ch+s;
				k=k/10;
			}
			//将a,b,c数组清空 
			for(int j=0;j<=10000;++j){
				a[j]=0;
				b[j]=0;
				c[j]=0;
			}
			//做js和s 高精度乘法 
			//反转字符串 
			reverse(jc.begin(),jc.end());
			reverse(s.begin(),s.end());
			//lena,lenb,lenc记录字符串长度 
			int lena=jc.size()-1;
			int lenb=s.size()-1; 
			int lenc=jc.size()+s.size()-1;
			//将jc,s中的每一位数转成数字分别存入a,b数组中 
			for(int j=0;j<=lena;++j){
				a[j]=jc[j]-'0';
			}
			for(int j=0;j<=lenb;++j){
				b[j]=s[j]-'0';
			}
			for(int j=0;j<=lena;++j){
				for(int k=0;k<=lenb;++k){
					c[j+k]=c[j+k]+a[j]*b[k];
					c[j+k+1]=c[j+k+1]+c[j+k]/10;
					c[j+k]=c[j+k]%10;
				}
			} 
			while(c[lenc]==0&&lenc>0) --lenc;
			//再把结果转存到jc变量中
			jc="";
			for(int j=lenc;j>=0;--j){
				char q=c[j]+'0';
				jc=jc+q;
			} 
		}
		//检查jc这个数里面有多少个数码a 
		int cnt=0;
		for(int i=0;i<=jc.size()-1;++i){
			if(jc[i]-'0'==aa){
			   ++cnt;	
			}
		}
		cout<<cnt<<endl;
	}
	return 0;
}

错误记录

大佬帮忙看一下,谢谢

2024/8/28 20:10
加载中...