解题思路

按照题上说的方案,个位数字去掉,再从余下的数中减去个位数的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);
	}
 }


点赞(18)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论