Divisibility by Eight
阿新 • • 發佈:2017-08-11
sca pop func tdi tin can 一位 views pre
把當前數刪除幾位然後能夠整除與8
那麽可得知大於3位數的推斷能否整除於八的條件是(n%1000)%8==0
能夠得出我們的結論:僅僅須要枚舉後三位後兩位後一位就可以知道是否可整除於8
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
char a[200];
int main() {
//printf("%d\n",344%8);
int ans = 0 ;
int flag = 0;
scanf("%s",a);
int l = strlen(a);
if(l>=3) {
for(int i=0; i<l-2; ++i) {
if(a[i]==‘0‘) continue;
for(int j=i+1; j<l-1; ++j) {
for(int k=j+1; k<l; ++k) {
ans = (a[i]-‘0‘)*100+(a[j]-‘0‘)*10+a[k]-‘0‘;
if(ans%8==0){
flag=1 ;
break;
}
}
if(flag) break;
}
if(flag)break;
}
}
// printf(" %d %d\n",flag,ans);
if(!flag&&l>=2) {
for(int i=0; i<l-1; ++i) {
if(a[i]==‘0‘) continue;
for (int j=i+1; j<l; ++j) {
ans = (a[i]-‘0‘)*10+(a[j]-‘0‘);
if(ans%8==0) {
flag=1;
break;
}
}
if(flag) break;
}
}
if(!flag) {
for(int i=0; i<l; ++i)
if((a[i]-‘0‘)%8==0) {
ans=a[i]-‘0‘;
flag=1;
break;
}
}
if(!flag) {
puts("NO");
} else puts("YES"),printf("%d\n",ans);
}
Divisibility by Eight