123456zzr @ 2023-05-06 21:13:06
using namespace std;
struct likP{
int ansl,a,n,ip;
}ans[11];
int a[10000001]={1,1},t;
int cmp(likP a,likP b)
{
return a.n<b.n;
}
void gjj(int n)
{
int x=0;
for(int i=1;i<=a[0];i++)
{
a[i]*=n;
a[i]+=x;
x=a[i]/10;
a[i]%=10;
}
while(x)
{
a[0]++;
a[a[0]]+=x;
x=a[a[0]]/10;
a[a[0]]%=10;
}
}
int ssz(int as)
{
int sum=0;
for(int i=1;i<=a[0];i++)
{
if(a[i]==as)
{
sum++;
}
}return sum;
}
int cmpl(likP a,likP b)
{
return a.ip<b.ip;
}
int main()
{
cin>>t;
for(int i=1;i<=t;i++)
{
cin>>ans[i].n>>ans[i].a;
ans[i].ip=i;
}
sort(ans+1,ans+t+1,cmp);
int j=2;
for(int i=1;i<=t;i++)
{
while(j<=ans[i].n )
{
gjj(j);
j++;
}
ans[i].ansl=ssz(ans[i].a);
}sort(ans+1,ans+t+1,cmpl);
for(int i=1;i<=t;i++)
{
cout<<ans[i].ansl<<endl;
}return 0;
}```
[结果](https://www.luogu.com.cn/record/109715816)
by 123456zzr @ 2023-05-06 21:16:31
极其离谱的提交结果 (某谷甚至不愿意告诉我为什么编译不过去)
by _buzhidao_ @ 2023-05-06 21:21:37
#include<bits/stdc++.h>
using namespace std;
const int _long=10030;//10^_long
void input(int x[]){
string s;cin>>s;
memset(x,0,sizeof(x));
x[0]=s.size();//数组格式:长度+内容
for(int i=0;i<x[0];i++){
x[x[0]-i]=s[i]-48;//惨痛的教训
}
}
void print(int x[]){
for(int i=x[0];i>0;i--) cout<<x[i];
cout<<endl;
}
void mem_set(int x[]){
for(int i=0;i<=_long;i++) x[i]=0;//不严谨
}
void cheng(int x[],int y[],int z[]){
mem_set(z);
z[0]=x[0]+y[0];int k;
for(int i=1;i<=x[0];i++){
k=0;
for(int j=1;j<=y[0];j++){
z[i+j-1]+=x[i]*y[j]+k;
k=z[i+j-1]/10;
z[i+j-1]%=10;
}
z[i+y[0]]+=k;
}
while(z[z[0]]==0&&z[0]>1) z[0]--;
}
void str_int(int x,int y[]){
int z=x,cnt=0;
y[0]=cnt;
while(z!=0){
y[cnt+1]=z%10;
z/=10;cnt++;
}
y[0]=cnt;
//print(y);
}
int main(){
int a[_long+1],b[_long+1],c[2*_long+1];
int n,s,l,cnt;
cin>>n;
for(int i=0;i<n;i++){
cin>>s>>l;
mem_set(a);
a[0]=1;a[1]=1;
cnt=0;
for(int j=1;j<=s;j++){
str_int(j,b);
cheng(a,b,c);
for(int k=0;k<=c[0];k++){
a[k]=c[k];
}
}
for(int i=1;i<=c[0];i++){
if(c[i]==l) cnt++;
}
cout<<cnt<<endl;
}
return 0;
}
~~跑的有些慢~~
by _buzhidao_ @ 2023-05-06 21:22:30
好像在代码后面加格式会有问题啊
by GSE_ @ 2023-05-06 21:23:43
刚看了一下你代码 在洛谷在线ide上跑不起来 将第四行a数组开小 可以过编译且答案正确
by GSE_ @ 2023-05-06 21:25:52
数组开到10^5就能过
#include <bits/stdc++.h>
using namespace std;
struct likP
{
int ansl,a,n,ip;
}ans[11];
int a[100001]={1,1},t;
int cmp(likP a,likP b)
{
return a.n<b.n;
}
void gjj(int n)
{
int x=0;
for(int i=1;i<=a[0];i++)
{
a[i]*=n;
a[i]+=x;
x=a[i]/10;
a[i]%=10;
}
while(x)
{
a[0]++;
a[a[0]]+=x;
x=a[a[0]]/10;
a[a[0]]%=10;
}
}
int ssz(int as)
{
int sum=0;
for(int i=1;i<=a[0];i++)
{
if(a[i]==as)
{
sum++;
}
}
return sum;
}
int cmpl(likP a,likP b)
{
return a.ip<b.ip;
}
signed main()
{
cin>>t;
for(int i=1;i<=t;i++)
{
cin>>ans[i].n>>ans[i].a;
ans[i].ip=i;
}
sort(ans+1,ans+t+1,cmp);
int j=2;
for(int i=1;i<=t;i++)
{
while(j<=ans[i].n )
{
gjj(j);
j++;
}
ans[i].ansl=ssz(ans[i].a);
}
sort(ans+1,ans+t+1,cmpl);
for(int i=1;i<=t;i++)
{
cout<<ans[i].ansl<<endl;
}
return 0;
}
似乎好像可能可以ac↑
by 123456zzr @ 2023-05-06 21:32:52
@GSE_ 谢谢大佬真的是数组开大了,血的教训++,已ac
by 123456zzr @ 2023-05-06 21:33:15
@buzhidao 也感谢这位大佬的指点
by __er @ 2023-05-06 21:35:08
@123456zzr 极大数组使用大括号初始化是这样的
by _buzhidao_ @ 2023-05-06 21:36:43
@1234zr 数组开大是会报错
by 123456zzr @ 2023-05-06 21:42:32
@__er 谢谢佬指点