HITACorz @ 2021-03-15 16:08:36
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
int High[101000];
int JC(int n) {
High[0] = 1;
int i, j;
int length = 1;
//乘以各个数
for (i = 2; i <= n; i++) {
//依次计算
for (j = 0; j < length; j++) {
High[j] *= i;
}
//检测进位
for (j = 0; j < length; j++) {
if (High[j] > 9) {
High[j + 1] += High[j] / 10;
High[j] %= 10;
//长度增加需要条件
if (j == length - 1)
length++;
}
}
}
return length;
}
void Scan(int n, int a) {
memset(High, 0, sizeof(int) * (n + 1));
int i;
int cnt = 0;
int len = JC(n);
for (i = 0; i < len; i++) {
if (High[i] == a) {
cnt++;
}
}
cout << cnt << endl;
}
int main() {
ios::sync_with_stdio(false);
int t;
int n, a;
cin >> t;
int i;
for (i = 0; i < t; i++) {
cin >> n >> a;
Scan(n, a);
}
return 0;
}
我的思路是每次输入都计算阶乘,计算之前先把数组清空。算完保存再数组里,然后每次进行扫描计数,但是他全WA
by zzz209 @ 2021-03-15 19:35:57
把同步打开试试
by HITACorz @ 2021-03-16 15:21:12
@zzz209 还是全WA,哭了?
by HITACorz @ 2021-03-16 21:16:16
球球了,快来人救一下吧
by zzz209 @ 2021-03-17 20:46:19
你自己琢磨一下
#include <stdio.h>
#include <iostream>
#include <string.h>
int a[20001],n,m,t,s;//n!,m是数码,t是有t位,s存答案,a数组是一串高精度数
using namespace std;
inline int multe(int n)
{
register int i,j;
for(i=1;i<=t;i++)//先让a数组的每一位都能乘以n
{
a[i]*=n;
}
for(i=1;i<=t;i++)//从1到位数进行循环
{
if(a[i]>9)//如果需要进位
{
a[i+1]+=a[i]/10;//进位
a[i]%=10;
if(i+1>t)//如果现在是最高位
{
t++;//位+1
}
}
}
return 0;
}
inline void lxydl()//lxy大佬太强啦!
{
for(register int i=t;i>=1;i--)//这个倒或正可能无所谓吧,但是高精度后出来的数字都是倒序的,那我们也倒叙
{
if(a[i]==m)//如果当前的a[i]等于数
{
s++;//算符+1
}
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
register int i,j,l;//l是l组数据
cin>>l;
while(l--)
{
cin>>n>>m;
s=0;//答案初始化
memset(a,0,sizeof(a));//清除缓存
a[1]=1;//假设第一位数为1,否则0乘任何数都是0
t=1;//至少有1位
for(i=1;i<=n;i++)//求n!
{
multe(i);//a数组乘以i
}
lxydl();//找n!里有多少m这个数
cout<<s<<endl;//输出答案
}
return 0;
}
上面代码是我转载后修改的。自己琢磨
by HITACorz @ 2021-03-17 20:54:51
@zzz209 谢谢谢谢大佬,orz感激不尽!
by HITACorz @ 2021-03-17 21:25:47
刚刚我修改了一下我的代码,Scan方法中的memset中的size设置不合适,我设置成n+1了,改成sizeof(High)就AC了!!!!!!!!!!
by zzz209 @ 2021-03-17 21:36:28
@HITACorz 不用谢
by zzz209 @ 2021-03-17 21:36:55
我也是蓝名