codeforces 550C - Divisibility by Eight
传送门儿
题目大意:给一个序列,让你移除一些数,判断剩下的能不能被8整除。
1.一位两位单独分析
2.三位以上有数学结论:如果一个三位以上的数,末三位能被8整除,那么整个数就能被8整除。那么我就枚举这个序列中的所有的三位数,如果ok就break
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<cmath>
#include<iostream>
using namespace std;
int main()
{
char s[200];
int a[200];
scanf("%s",s);
int len=strlen(s);
for(int i=0;i<len;i++)
a[i]=s[i]-'0';
for(int i=0;i<len;i++)
{
if(a[i]%8==0)
{
cout<<"YES\n"<<a[i]<<endl;
return 0;
}
}
for(int i=0;i<len;i++)
for(int j=i+1;j<len;j++)
{
int x=a[i]*10+a[j];
if(x%8==0)
{
cout<<"YES\n"<<x<<endl;
return 0;
}
}
for(int i=0;i<len;i++)
for(int j=i+1;j<len;j++)
for(int k=j+1;k<len;k++)
{
int x=a[i]*100+a[j]*10+a[k];
if(x%8==0)
{
cout<<"YES\n"<<x<<endl;
return 0;
}
}
cout<<"NO\n";
}