mirage


私信TA

用户名:mirage915

访问量:12284

签 名:

蒟蒻也想变强啊..

等  级
排  名 2336
经  验 2351
参赛次数 2
文章发表 9
年  龄 0
在职情况 在职
学  校
专  业

  自我简介:

解题思路

按照题上说的方案,个位数字去掉,再从余下的数中减去个位数的5倍,,来做的。


做完看了别人的题解,发现别人的方法更简单。


想了想还是发出来,题上方法的代码实现,记录一下。


参考代码:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void jian(char a[],int x)//参数X为字符串下标,实现高位借 1  
{
	if(a[x]>'0') a[x]--;
	else
	{
		a[x]='9';
		jian(a,x-1);//更高位减一 
	}
}
main()
{
	char a[102];
	int num,len,b;
	scanf("%s",&a);
	while(a[0]!='0')
	{
		for(len=strlen(a)-1;len>7;len--)// 长度 len - 1 为数组下标,7 是任意的,小于int的长度就行 
		{
			b = (a[len]-'0') * 5;//末位数字 乘 5 
			a[len]='\0';//末位改为结束符 
			if(b>=10)// 末位数乘 5 大于 10,先处理十位 
			{
				if( (a[len-2]-'0') < b/10)//十位不够减 向高位借 1 
				{
					jian(a,len-3);
					a[len-2]+=10;
				}
				a[len-2]=a[len-2]-b/10;//十位相减 
				b=b%10;//分离个位 
			}
			if( (a[len-1]-'0') < b)//个位不够减 向高位借 1 
			{
				jian(a,len-2);
				a[len-1]+=10;
			}
			a[len-1]=a[len-1]-b;//个位相减 
		}
		num=atoi(a);//字符串转换为 int  
		if( num%17 == 0)    printf("1\n");
		else 		    printf("0\n");
		scanf("%s",&a);
	}
 }


 

0.0分

0 人评分

  评论区

  • «
  • »