CodeForces 550CDivisibility by Eight(暴力)

来源:互联网 发布:天下3 mac 编辑:程序博客网 时间:2024/06/15 01:20

http://http://codeforces.com/problemset/problem/550/C

题意:

给出一串数字,在原先的顺序基础上适当的删除一些数使得最终的结果能被8整除

 

解题思路:

能被8整除的数的特征:如果这个数超过3位,那么只要后三位能被8整除,这个数就能被8整除

一开始想的太复杂,想用搜索,其实只要用for循环暴力一下就可以了,毕竟给出的数最多只有100位

 

#include <iostream>#include <cstdio>#include <cstring>using namespace std;char c[105];int main(){scanf("%s",c);int len = strlen(c);int k=1;for(int i=0;i<len;i++){if(c[i]=='8' || c[i]=='0') {cout<<"YES"<<endl<<c[i]<<endl;return 0;}}if(len==1) {if((c[0]-'0')%8==0) {cout<<"YES"<<endl<<c[0]<<endl;return 0;}else {cout<<"NO"<<endl;return 0;}} if(len==2){int p = (c[1]-'0')*10+(c[0]-'0');if(p%8==0) {cout<<"YES"<<endl<<p<<endl;return 0;}else{cout<<"NO"<<endl;return 0;}}for(int i=0;i<len;i++){for(int j=i+1;j<len;j++){int p = (c[i]-'0')*10+(c[j]-'0');if(p%8==0) {cout<<"YES"<<endl<<p<<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 p = (c[i]-'0')*100+(c[j]-'0')*10+(c[k]-'0');if(p%8==0) {cout<<"YES"<<endl<<p<<endl;return 0;}}}}cout<<"NO"<<endl;return 0;}


 

0 0
原创粉丝点击