这是题目
#include<stdio.h>
#include<string.h>
void PD3(char a[]);
void PD5(char a[]);
void PD8(char a[]);
void PD11(char a[]);
char a[10001];
int flag=0,f3=0,f5=0,f8=0,f11=0;
int main()
{
scanf("%s",a);
PD3(a);
PD8(a);
PD5(a);
PD11(a);
if(flag==1)
{
printf("Yes\n");
}
else
printf("No");
if(f3==1)
printf("3 ");
if(f5==1)
printf("5 ");
if(f8==1)
printf("8 ");
if(f11==1)
printf("11 ");
return 0;
}
void PD3(char a[])
{
int temp=0,sum=0,j;
for(j=0;a[j]!='\0';j++)
{
temp+=a[j]-48;
}
if(temp/100000==0)
{
sum+=temp/10000+(temp/1000)%10+(temp/100)%10+(temp/10)%10+temp%10;
}
if(temp/10000==0)
{
sum+=temp/1000+(temp/100)%10+(temp/10)%10+temp%10;
}
if(temp/1000==0)
{
sum+=temp/100+(temp/10)%10+temp%10;
}
if(temp/100==0)
{
sum+=temp/10+temp%10;
}
if(sum%3==0&&temp!=0)
{
f3=1;
flag=1;
}
}
void PD5(char a[])
{
int temp=0,j;
for(j=0;a[j]!='\0';j++)
{
temp+=a[j]-48;
}
//printf("%d %d\n",j,temp);
if(temp!=0&&a[j-1]=='0'||a[j-1]=='5')
{
f5=1;
flag=1;
}
}
void PD8(char a[])
{
int temp=0,sum=0,j,i;
for(j=0;a[j]!='\0';j++)
{
temp+=a[j]-48;
}
for(j=0;a[j+3]!='\0';j++)
{
;
}
if(a[j+1]=='\0')
{
sum=a[j]-48;
}
else if(a[j+2]=='\0')
{
i=10;
for(;a[j]!='\0';j++)
{
sum+=(a[j]-48)*i;
i/=10;
}
}
else if(a[j+3]=='\0')
{
i=100;
for(;a[j]!='\0';j++)
{
sum+=(a[j]-48)*i;
i/=10;
}
}
if(sum%8==0&&temp!=0)
{
f8=1;
flag=1;
}
}
void PD11(char a[])
{
int len,sum=0,j,temp=0;
len=strlen(a);
for(j=0;a[j]!='\0';j++)
{
temp+=a[j]-48;
}
if(len%2==0)
{
for(j=0;a[j]!='\0';j=j+2)
{
sum+=a[j]-a[j+1];
}
}
if(len%2!=0)
{
for(j=0;a[j+1]!='\0';j=j+2)
{
sum+=a[j]-a[j+1];
}
sum+=a[j]-48;
}
if(sum%11==0&&temp!=0)
{
f11=1;
flag=1;
}
}