1. 程式人生 > >Divisibility by Eight

Divisibility by Eight

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