题目链接:点击打开链接
题目大意:
每次将原数各个位相加,然后放在后面,问经历t次之后能不能被11整除。
思路:
能被11整除的数有一个性质:判断能不能被11整除只用看偶数位全部相加,奇数位全部相加,两者做差以后判断能否被11整除,如果可以表明能被11整除。
直接模拟即可。
#include<stdio.h>
#include<string.h>
#include<math.h>
#define LL __int64
LL sum,a[1000005],b[1000005],ans;
int main()
{
int n,t,i,j,k;
int cas=0;
while(scanf("%d%d",&n,&t)!=EOF)
{
int x=k=0;
cas++;
sum=0;
ans=0;
if(n==-1&&t==-1)break;
i=0;
while(x<=t)
{
while(n){
a[k++]=n%10;
n=n/10;
sum+=a[k-1];
}
for(j=0;i<k;j++,i++)
{b[i]=a[k-1-j]; //将各个位数全部存起来
}
n=sum;
x++;
}
for(i=0;i<k;i++)
{
if(i%2==0)ans+=b[i]; //偶数相加
if(i%2==1)ans-=b[i]; //奇数相减
}
printf("Case #%d: ",cas);
// printf("%I64d\n",ans);
if(ans%11==0)printf("Yes\n");
else printf("No\n");
}
}

851

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



