题意:给出一个数,删除某些位上的数字,使其能够被10的k次方整除
记录每个0出现的位置,并统计个数
code:
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int main()
{
char s[11];int num[20];
int k;
while(~scanf("%s%d",s,&k))
{
int le=strlen(s);
int sum=0;
for(int i=0;i<le;i++){
if(s[i]=='0')
num[sum++]=i;
}
if(sum<k)
printf("%d\n",le-1);
else{
int tt=le-num[sum-k]-k;
printf("%d\n",tt);
}
}
return 0;
}
例如10203049 2 num[0]=1,num[1]=3,num[2]=5 sum=3 tt=le-num[sum-k]-k=8-num[3-2]-2=3

本文介绍了一种算法问题,即如何通过删除一个给定数字中的某些位,使其能被10的k次方整除。文章提供了一个具体的C++代码实现,首先统计目标数字中0的个数及位置,然后据此确定最少需要删除的数字数量。
1933

被折叠的 条评论
为什么被折叠?



