#include<stdio.h>
#include<stdio.h>
#include<ctype.h>
#include<string.h>
int main()
{
char num[110],ge[2]; //存储测试数据
int L,I; //测试数据位数
int i,j,k,m,n;
int ge5,test;
gets(num);
while(num[0] != '0')
{
L = strlen(num);
I = L -3;
if(L > 3)
{
for(i=0;i<I;i++)
{
if(num[L-1-i] == '0') //如果个位数是0,直接去掉
{
continue;
}
ge5 = (num[L-1-i] - '0') * 5; //个位数的5倍
ge[0] = '0' + ge5 / 10; //十位数
ge[1] = '0' + ge5 % 10; //个位数
//下面计算num减去ge的差
/*** 个位相减 ***/
if(num[L-2-i] < ge[1]) //如果需要借位
{
j = L-3-i;
k = j;
while(num[j] == 0)
{
j--;
}
num[j]--; //高位减1
j++;
for(;j<=k;j++)
num[j] += 9;
num[L-2-i] = num[L-2-i] + 10 - ge[1]+'0'; //个位相减
}
else
num[L-2-i] = num[L-2-i] - ge[1]+'0';
/*** 十位相减 ***/
if(num[L-3-i] < ge[0])
{
j = L-4-i;
k = j;
while(num[j] == 0)
{
j--;
}
num[j]--; //高位减1
j++;
for(;j<=k;j++)
num[j] += 9;
num[L-3-i] = num[L-3-i] + 10 - ge[0]+'0'; //个位相减
}
else
num[L-3-i] = num[L-3-i] - ge[0]+'0';
// for(j=0;j<10;j++)
// printf("%c",num[j]);
// printf("\n");
}
L = 3;
}
switch(L)
{
case 1:
test = num[0] - '0';
break;
case 2:
test = (num[0] - '0') * 10 + (num[1] - '0');
break;
case 3:
test = (num[0] - '0') * 10 + (num[1] - '0');
test = test - (num[2]-'0')*5;
break;
}
printf("%d\n",test % 17 == 0);
gets(num);
}
return 0;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复