当前位置 : 主页 > 编程语言 > java >

【cf 550C】C. Divisibility by Eight

来源:互联网 收集:自由互联 发布时间:2022-07-04
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枚举后三位即可。

#include<bits/stdc++.h>
using namespace std;
char s[110];
#pragma warning(disable:4996)
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;
}

 


上一篇:【ICPC 2019 徐州Regional】
下一篇:没有了
网友评论