原题链接:数字整除
解题思路
按照题上说的方案,个位数字去掉,再从余下的数中减去个位数的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 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复