求教,样例没毛病,哪里错了
查看原帖
求教,样例没毛病,哪里错了
1091218
lingbangfu楼主2023/12/15 00:03
#include<stdio.h>
int kkk(int n,int m);
int main()
{
	int t,i;
	int c[10],b[10];
	scanf("%d",&t);
	for(i=0;i<t;i++){
		scanf("%d %d",&c[i],&b[i]);
	}
	for(i=0;i<t;i++){
		printf("%d\n",kkk(c[i],b[i]));}
	return 0; 
}
int kkk(int n,int m){    //n是需要的阶乘 ,m代表要统计出现次数的数码 
	int s,k=0,i,j;//s表示最高位,k是后面用到的数码出现次数的和 
	int a[10000]={1};
	for(i=1,s=0;i<=n;i++){
		for(j=0;j<=s;j++){a[j]*=i;}//用来把数组每个元素都乘上i 
		for(j=0;j<s;j++){	if(a[j]>=10){
			            	a[j+1]+=a[j]/10;
			            	a[j]=a[j]%10;	}//用来把除了最高位的元素需要进位的进行处理 
		}
		if(a[j]>=10){
				a[j+1]+=a[j]/10;
				a[j]=a[j]%10;
				s+=1;
		}                         //这里单独把最高位的元素处理,如果需要进位那么最高位s就加一  
		}
	for(i=0;i<=s;i++){
		if(a[i]==m){
			k+=1;
		}//这里统计数码个数 
	}
	return k;
}
2023/12/15 00:03
加载中...