题解
2024-04-27 12:42:31
发布于:湖北
39阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
int sr[20][3];
int t,Max=-1;
int jiecheng(int n)
{
long long num[3000]={0,1},len=1;
for(int i=1;i<=n;i++) {
for(int j=1;j<=len;j++)
{
num[j]*=i;
}
for(int j=1;j<=len;j++)
{
num[j+1]+=num[j]/10;
num[j]%=10;
if(num[len]!=0)len++;
}
for(int k=1;k<=t;k++)
{
if(sr[k][0]==i){
int count = 0;
for(int q=len-1;q>=1;q--)
{
if(sr[k][1]==num[q])count++;
}
sr[k][2]=count;
//cout<<sr[k][0]<<"!!!!"<<count<<endl;
}
}
}
}
int main()
{
cin>>t;
for(int i=1;i<=t;i++)
{
int n,a;
cin>>n>>a;
sr[i][0]=n;
sr[i][1]=a;
Max=max(n,Max);
//cout<<Max<<endl;
}
jiecheng(Max);
for(int k=1;k<=t;k++)
{
cout<<sr[k][2]<<endl;
}
}
全部评论 1
你的代码肯定运行错误,少了两个return 0;
这是修改后的代码#include <bits/stdc++.h> using namespace std; int sr[20][3]; int t,Max=-1; int jiecheng(int n) { long long num[3000]={0,1},len=1; for(int i=1;i<=n;i++) { for(int j=1;j<=len;j++) { num[j]*=i; } for(int j=1;j<=len;j++) { num[j+1]+=num[j]/10; num[j]%=10; if(num[len]!=0)len++; } for(int k=1;k<=t;k++) { if(sr[k][0]==i){ int count = 0; for(int q=len-1;q>=1;q--) { if(sr[k][1]==num[q])count++; } sr[k][2]=count; //cout<<sr[k][0]<<"!!!!"<<count<<endl; } } } return 0; } int main() { cin>>t; for(int i=1;i<=t;i++) { int n,a; cin>>n>>a; sr[i][0]=n; sr[i][1]=a; Max=max(n,Max); //cout<<Max<<endl; } jiecheng(Max); for(int k=1;k<=t;k++) { cout<<sr[k][2]<<endl; } return 0; }
2024-10-15 来自 北京
0
有帮助,赞一个