#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语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:823 |
1128题解(返回值为数组的情况)浏览:571 |
快速排序算法1浏览:996 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:526 |
【出圈】 (C语言代码)浏览:1026 |
孤独的骑士 (C语言代码)浏览:1113 |
Manchester- A+B for Input-Output Practice (I)浏览:1850 |
汪汪与打针 (C++代码)浏览:1438 |
时间转换 (C语言代码)浏览:856 |
C语言程序设计教程(第三版)课后习题6.6 (C语言代码)浏览:928 |