1. 程式人生 > >洛谷——P1591 階乘數碼

洛谷——P1591 階乘數碼

include print string 高精 -o fin name pan ==

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>
#define
N 1300000 #define mod 10007 using namespace std; int t,l,n,x,m,a[N],ans; int read() { int x=0,f=1; char ch=getchar(); while(ch<0||ch>9){if(ch==-)f=-1;ch=getchar();} while(ch>=0&&ch<=9) x=x*10+ch-0,ch=getchar(); return x*f; } int main() { t=read();
while(t--) { n=read(),x=read(); memset(a,0,sizeof(a)); l=1,a[1]=1,ans=0; for(int i=1;i<=n;i++) { for(int j=1;j<=l;j++) a[j]*=i; for(int j=1;j<=l;j++) { if(a[j]>9&&j+1>=l) l++; a[j
+1]+=a[j]/10,a[j]%=10; } } while(a[l]==0) l--; for(int i=1;i<=l;i++) if(a[i]==x) ans++; printf("%d\n",ans); } return 0; }

洛谷——P1591 階乘數碼