题意:给你一串数问你能不能选几个数组合起来的数被8整除
思路:位数很小,所以直接暴力就好了,判断能不能被8整除是看一个数的后三位,至于为什么要写这篇题解呢,是因为wa了一发,看了其他人的题解,学到了一些东西,就是在字符串读入的时候可以向后扩几位,把前面补为0,这样就不用考虑低于3位的情况,这方法真聪明。
代码:
#include <bits/stdc++.h> using namespace std; char a[1005]; int main() { while(~scanf("%s",a+2)) { a[0] = a[1] = ‘0‘; int len=strlen(a),s; int i,j,k,ok=0; for(i=0;i<len-2;i++){ if(ok) break; for(j=i+1;j<len-1;j++){ if(ok) break; for(k=j+1;k<len;k++){ s=(a[i]-‘0‘)*100+(a[j]-‘0‘)*10+a[k]-‘0‘; if(s%8==0){ ok=1; break; } } } } if(ok) printf("YES\n%d\n",s); else printf("NO\n"); } return 0; }