- 题目链接 :)
- 题目大意:给出一组数,看去掉一部分数后能否是剩下的数被8整除
- 解题思路:这道题最关键的就是要知道只要一个数的后三位可以被8整除,那么这个数就可以被8整除。证明比如一个数abcd=a*1000+b*100+c*10+d,其中1000可以被8整除所以只要剩余部分可以被8整除整个数就可被8整除。1000,10000……等都可以被8整除。知道这一点了数据范围只有100,可以直接暴力枚举
- AC代码
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int main()
{
char a[101],ans[100]={'0','0','0'};
int i,j,k,len,cnt=0;
scanf("%s",a);
len=strlen(a);
for(i=0;i<len;i++)
{
int temp=a[i]-'0';
if(temp%8==0)
{
ans[cnt++]=a[i];
break;
}
for(j=i+1;j<len;j++)
{
temp=(a[i]-'0')*10+a[j]-'0';
if(temp%8==0)
{
ans[cnt++]=a[i];
ans[cnt++]=a[j];
break;
}
for(k=j+1;k<len;k++)
{
temp=(a[i]-'0')*100+(a[j]-'0')*10+(a[k]-'0');
if(temp%8==0)
{
ans[cnt++]=a[i];
ans[cnt++]=a[j];
ans[cnt++]=a[k];
break;
}
}
if(k<len)
break;
}
if(j<len)
break;
}
ans[cnt]='\0';
if(i<len)
{
printf("YES\n");
printf("%s",ans);
}
else
printf("NO\n");
return 0;
}