1.题目链接。给定一个数字,问是否可以通过删除一些数字使得剩下的数字可以整除8.注意删除之后的数字位置相对不变 2.思维题,其实还是蛮好做的。我们保留的数字其实最多
1.题目链接。给定一个数字,问是否可以通过删除一些数字使得剩下的数字可以整除8.注意删除之后的数字位置相对不变
2.思维题,其实还是蛮好做的。我们保留的数字其实最多只需要三位数,原因很简单,从第四位数到最后一定可以整除。
比如:an..a3a2a1。那么这个数可以被写成:an*pow(10,n-1)+an-1*pow(10,n-2).....a3*100+a2*10+a1.对于四位以后的,权值至少是1000,这个是整除8的,所以这个数能不能整除8其实全是看前三位。n^3枚举后三位即可。
using namespace std;
char s[110];
int main()
{
scanf("%s", &s);
int len = strlen(s);
for (int i = 0; i < len; i++){
int t1 = s[i]- '0';
if (t1 % 8 == 0)
{
printf("YES\n%d\n", t1); return 0;
}
for (int j = i + 1; j < len; j++)
{
int t2 = t1 * 10 + s[j] - '0';
if (t2 % 8 == 0) { printf("YES\n%d\n", t2); return 0; }
for (int k = j + 1; k < len; k++)
{
int t3 = t2 * 10 + s[k] - '0';
if (t3 % 8 == 0) { printf("YES\n%d\n", t3); return 0; }
}
}
}
puts("NO");
return 0;
}