hunj @ 2024-08-28 20:10:53
#include<bits/stdc++.h>
using namespace std;
//定义数组a,b,c
int a[10005];
int b[10005];
int c[10005];
int main(){
int t;
cin>>t;
int n,aa;
for(int p=1;p<=t;++p){
//p组数据
cin>>n>>aa;
string jc="1";
for(int i=1;i<=n;++i){
//转入字符串s
int k=i;
string s="";
while(k>0){
int x=k%10;
char ch=k+'0';
s=ch+s;
k=k/10;
}
//将a,b,c数组清空
for(int j=0;j<=10000;++j){
a[j]=0;
b[j]=0;
c[j]=0;
}
//做js和s 高精度乘法
//反转字符串
reverse(jc.begin(),jc.end());
reverse(s.begin(),s.end());
//lena,lenb,lenc记录字符串长度
int lena=jc.size()-1;
int lenb=s.size()-1;
int lenc=jc.size()+s.size()-1;
//将jc,s中的每一位数转成数字分别存入a,b数组中
for(int j=0;j<=lena;++j){
a[j]=jc[j]-'0';
}
for(int j=0;j<=lenb;++j){
b[j]=s[j]-'0';
}
for(int j=0;j<=lena;++j){
for(int k=0;k<=lenb;++k){
c[j+k]=c[j+k]+a[j]*b[k];
c[j+k+1]=c[j+k+1]+c[j+k]/10;
c[j+k]=c[j+k]%10;
}
}
while(c[lenc]==0&&lenc>0) --lenc;
//再把结果转存到jc变量中
jc="";
for(int j=lenc;j>=0;--j){
char q=c[j]+'0';
jc=jc+q;
}
}
//检查jc这个数里面有多少个数码a
int cnt=0;
for(int i=0;i<=jc.size()-1;++i){
if(jc[i]-'0'==aa){
++cnt;
}
}
cout<<cnt<<endl;
}
return 0;
}
错误记录
大佬帮忙看一下,谢谢