分析:题目问最后得到的数能不能被11整除,11的倍数的特点是奇数位和偶数位的差能被11整除,知道这就好求了。
# include <stdio.h>
# include <string.h>
char s[10];
int main()
{
int i,n,t,len,cas=1,sum,tem,k,s1,s2,x1,x2;
while(scanf("%d%d",&n,&t))
{
if(n==-1&&t==-1)
break;
sprintf(s,"%d",n);
len=strlen(s);
s1=s2=0;
for(i=sum=0;i<len;i++)
{
sum+=s[i]-'0';
if(i%2==0)
s1+=s[i]-'0';
else
s2+=s[i]-'0';
}
while(t--)
{
tem=sum;
k=x1=x2=0;
while(tem)
{
if(k%2==0)
x1+=tem%10;
else
x2+=tem%10;
sum+=tem%10;
tem/=10;
k++;
}
if(len%2==0)
{
if(k%2==1)
s1+=x1,s2+=x2;
else
s1+=x2,s2+=x1;
}
else
{
if(k%2==1)
s1+=x2,s2+=x1;
else
s1+=x1,s2+=x2;
}
len+=k;
}
printf("Case #%d: ",cas++);
if((s1-s2)%11==0)
printf("Yes\n");
else
printf("No\n");
}
return 0;
}

本文介绍了一个通过不断迭代初始数字与当前迭代步数的和来判断最终结果是否为11的倍数的算法。该算法利用了11倍数的特性,即奇数位和偶数位数字之差能被11整除。通过C语言实现,包括读取输入、处理数字和判断条件等步骤。
314

被折叠的 条评论
为什么被折叠?



