#include<stdio.h>
int countdigits(int n);
int main(void)
{
int t,k;
scanf("%d %d",&t,&k);
long long N[t];
int i;
for (i=0;i<t;i++)
{
scanf("%lld",&N[i]);
}
int j,main_count=0;
for (j=0;j<t;j++)
{
int counter=0;
while (N[j] !=0)
{
if (N[j]%10 <=k)
{
counter++;
}
else
;
N[j]=N[j]/10;
}
if (counter==countdigits(N[j]))
main_count+=1;
}
printf("%d",main_count);
return 0;
}
int countdigits(int n)
{
int num,counter=0;
num=n;
for(;num !=0;num=num/10)
{
counter++;
}
return counter;
}
我确定算法,问题在这里 如果它包含不超过k(0,...,k)的所有数字,那么我们称它为数字k-good 你有一个数字k和一个包含n个数字的数组 找出a中有多少个k-good数字(每次在数组a中出现时计算每个数字)。
输入
第一行包含整数n和k(1≤n≤100,0≤k≤9)。以下n行中的第i行包含不带前导零的整数ai(1≤ai≤109)。
输出
打印一个整数 - 一个.- / p>中的k-good数字的数量
有人可以告诉我哪里出错了?
答案 0 :(得分:0)
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s;
int n, k, count = 0;
cin >> n >> k;
while (n--)
{
cin >> s;
int f[10] = {0};
bool good = true;
for (int i=0;i<s.size();i++)
f[s[i]-'0']=1;
for (int i=0;i<=k;i++)
if (f[i]==0)
good = false;
if (good)
count ++;
}
cout << count << endl;
return 0;
}
网站上接受的代码。特里克在“包含所有数字不超过”。问题描述说必须包括所有数字&lt; = k。问题没有说数字&gt; k不应该包括在内。大于k的数字存在或不存在的事实并不重要。