题目如下
能试的数(1-100)大概都试过了,都没问题,作业平台说答案错误86。
代码是我化到最简了,不喜轻喷
#include<stdio.h>
#include<string.h>
void PD3(const char a[]);
void PD5(const char a[]);
void PD8(const char a[]);
void PD11(const char a[]);
char a[10001];
int flag=0,f3=0,f5=0,f8=0,f11=0;
int main()
{
scanf("%s",a);
PD3(a); PD5(a); PD8(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(const char a[])
{
int temp=0,j;
for(j=0;a[j]!='\0';j++)
{temp+=a[j]-48; }
if(temp%3==0&&a[0]!='0')
{f3=1; flag=1; }
}
void PD5(const char a[])
{
int j;
for(j=0;a[j]!='\0';j++)
{;}
if(a[0]!='0'&&a[j-1]=='0'||a[j-1]=='5')
{f5=1; flag=1;}
}
void PD8(const char a[])
{
int sum=0,j,len;
for(j=0;a[j+3]!='\0';j++)
{;}
len=strlen(a);
if(len<=2)
{
if(len==1) {sum=a[j]-48;}
if(len==2) {sum=(a[j]-48)*10+a[j+1]-48;}
}
else
{sum=(a[j]-48)*100+(a[j+1]-48)*10+a[j+2]-48;}
if(sum%8==0&&a[0]!='0')
{f8=1; flag=1; }
}
void PD11(const char a[])
{
int j,sum1=0,sum2=0,sum;
for(j=0;a[j]!='\0';j++)
{
sum1+=a[j]-48; j++;
if(a[j]!='\0')
sum2+=a[j]-48;
}
sum=sum1-sum2;
if(sum%11==0&&a[0]!='0')
{f11=1; flag=1;}
}