Манаса любит математическое решение в c
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int val[10];
int flag = 0;
void permute(int i,int n)
{
int j,k,t;
long int N;
if(i == n)
{
N=0;
for(k=0;k<=n;k++)
N = N*10 + val[k];
N = N % 1000;
if(flag == 0)
{
if(N%8 == 0)
flag =1;
}
//printf("%ld\n",N);
}
else
{
for(j=i;j<=n;j++)
{
t=val[i];
val[i]= val[j];
val[j] = t;
permute(i+1,n);
t=val[i];
val[i]= val[j];
val[j] = t;
}
}
}
int main() {
int T;
char ch[115];
int arr[10]={0},i,j;
long long int N;
scanf("%d",&T);
while(T--)
{
N=0;
for(i=0;i<10;i++)
arr[i]=0;
scanf("%s",ch);
//printf("%s\n",ch);
//continue;
for(i=0;i<strlen(ch);i++)
{
arr[ch[i]-48]=1;
}
j=0;
for(i=0;i<10;i++)
{
//printf("%d ",arr[i]);
if(arr[i] == 1)
val[j++] = i; //N = N*10 + i;
}
//for(i=0;i<j;i++)
//printf("%d ",val[i]);
// break;
flag = 0;
//printf("%d\n",flag);
permute(0,j-1);
//printf("%d\n",flag);
if(flag == 1)
printf("YES\n");
else
printf("NO\n");
//if(arr[0] == 1)
// N = N*10;
//printf(" %lld\n",N);
//break;
}
return 0;
}
Ashamed Anteater