原题链接:数字整除
解题思路
按照题上说的方案,个位数字去掉,再从余下的数中减去个位数的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、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复