阶乘数码0分求解

2. 阶乘数码

题目ID:7711必做题50分

最新提交:

Wrong Answer

0 分

历史最高:

Wrong Answer

0 分

时间限制: 1000ms

空间限制: 262144kB

题目描述

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

输入格式

一行,一个正整数n(≤1000)和数码a。

输出格式

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

样例

Input 1

5 2

Output 1

1

Input 2

7 0

Output 2

2

样例解释

样例输入1的说明:计算5!中数字2出现的次数。样例输入2的说明:计算7!中数字0出现的次数。

数据范围

n<=1000, 0<=a<=9

本人代码:

#include <iostream>
#include <stdlib.h>
#include <string>
#include <vector>
#include <cmath>
#include <time.h>
#include <algorithm>
using namespace std;

int chai (int n , int k) {
	int temp , cnt = 0;
	while (n != 0) {
		temp = n % 10;
		if (temp == k)
			cnt ++;
		n /= 10;
	}
	return cnt;
}

int n , k;
int cnt , sum;
int a[1005];

int main()
{
	scanf ("%d %d" , &n , &k);
	for (int i = 1 ; i <= n ; i ++)
		a[i] = i;
		
	for (int i = n + 1 ; i >= 1 ; i --) {
		sum = a[i] * a[i - 1];
		cnt += chai (sum , a[i]);
	}
	
	printf ("%d\n" , cnt);
	return 0;
}

感觉是数组反向存储或函数处理问题,如有思路,请私信告知,谢谢!

1 个赞

1000! int128都能给你爆了,所以这题要用高精度

1 个赞