样例过了,提交五彩斑斓,就是没有绿~~ 请大佬们查看一下!!
#include<iostream>
#include<iomanip>
#include<cmath>
#include<cstring>
#include<string>
#include<cstdio>
#include<algorithm>
#include<stack>
#include<queue>
#include<map>
#include<vector>
#include<list>
using namespace std;
//高精加法
string gao_jia(string a,string b){
string ans ="";
int na[505],nb[505];
memset(na,0,sizeof(na));
memset(nb,0,sizeof(nb));
int len1=a.size();
int len2=b.size();
int len=max(len1,len2);
for(int i=0;i<len1;i++){
na[len1-i-1]=a[i]-'0';
}
for(int i=0;i<len2;i++){
nb[len2-i-1]=b[i]-'0';
}
for(int i=0;i<len;i++){
na[i]+=nb[i];
na[i+1]+=na[i]/10;
na[i]%=10;
}
int i=len;
while(i>0&&na[i]==0) i--;
for(i;i>=0;i--){
ans+=char(na[i]+'0');
}
return ans;
}
bool cmp(string a,string b){
int len1=a.size();
int len2=b.size();
if(len1!=len2){
return len1>len2;
}
else{
return a>b;
}
}
//高精减法
string gao_jian(string a,string b){
string ans="";
if(!cmp(a,b)){
ans+='-';
swap(a,b);
}
int na[505],nb[505];
memset(na,0,sizeof(na));
memset(nb,0,sizeof(nb));
int len1=a.size();
int len2=b.size();
int len=max(len1,len2);
for(int i=0;i<len1;i++){
na[len1-i-1]=a[i]-'0';
}
for(int i=0;i<len2;i++){
nb[len2-i-1]=b[i]-'0';
}
for(int i=0;i<len;i++){
na[i]-=nb[i];
if(na[i]<0){
na[i+1]-=1;
na[i]+=10;
}
}
int i=len;
while(i>0&&na[i]==0) i--;
for(i;i>=0;i--){
ans+=char(na[i]+'0');
}
return ans;
}
//高精乘单精
string gao_cheng_dan(string a,int b)
{
int na[505],len;
string ans="";
len = a.size();
for(int i=0;i<len;i++)
{
na[len-i-1] = a[i]-'0';
}
for(int i=0;i<len;i++)
{
na[i] *= b;
}
//统一处理进位
for(int i=0;i<len;i++)
{
na[i+1] += na[i]/10;
na[i] %= 10;
}
while(na[len])
{
na[len+1] = na[len]/10;
na[len] %= 10;
len++;
}
for(int i=len-1;i>=0;i--)
{
ans += char(na[i]+'0');
}
return ans;
}
//高精乘高精
string gao_cheng_gao(string a,string b){
string ans ="";
int na[2000],nb[2000],c[4000];
memset(na,0,sizeof(na));
memset(nb,0,sizeof(nb));
memset(c,0,sizeof(c));
int len1=a.size();
int len2=b.size();
int len=len1+len2;
for(int i=0;i<len1;i++){
na[len1-i-1]=a[i]-'0';
}
for(int i=0;i<len2;i++){
nb[len2-i-1]=b[i]-'0';
}
for(int i=0;i<len1;i++){
for(int j=0;j<len2;j++){
c[i+j]+=na[i]*nb[j];
}
}
for(int i=0;i<len;i++){
c[i+1]+=c[i]/10;
c[i]%=10;
}
bool p=1;
for(int i=len-1;i>=0;i--){
if(p&&c[i]==0&&i!=0){
continue;
}
else{
p=0;
}
ans+=char(c[i]+'0');
}
return ans;
}
//高精除低精
string gao_chu_dan(string a,int b)
{
long long na[5005],len,n[10010];
string ans="";
len = a.size();
for(int i=0;i<len;i++)
{
na[i] = a[i]-'0';
}
for(int i=0;i<len;i++)
{
n[len-i-1]= na[i]/b;
long long yu=na[i]%b*10;
na[i+1]+=yu;
}
int i=len;
while(i>0&&n[i]==0) i--;
for(i;i>=0;i--){
ans+=char(n[i]+'0');
}
return ans;
}
int p;
char o;
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++){
cin>>p>>o;
string jc="1";
int cnt=0;
for(int j=1;j<=p;j++){
jc=gao_cheng_dan(jc,j);
}
// cout<<endl<<jc<<endl;
for(int j=0;j<jc.length();j++){
if(jc[j]==o){
cnt++;
}
}
cout<<cnt<<endl;
}
}