定理:把一个至少两位的正整数的个位数字去掉,再从余下的数中减去个位数的5倍。当且仅当差是17的倍数时,原数也是17的倍数 。
例如,34是17的倍数,因为3-20=-17是17的倍数;201不是17的倍数,因为20-5=15不是17的倍数。输入一个正整数n,你的任务是判断它是否是17的倍数。
标签:acm
定理:把一个至少两位的正整数的个位数字去掉,再从余下的数中减去个位数的5倍。当且仅当差是17的倍数时,原数也是17的倍数 。
例如,34是17的倍数,因为3-20=-17是17的倍数;201不是17的倍数,因为20-5=15不是17的倍数。输入一个正整数n,你的任务是判断它是否是17的倍数。
输入文件最多包含10组测试数据,每个数据占一行,仅包含一个正整数n(1<=n<=10100),表示待判断的正整数。n=0表示输入结束,你的程序不应当处理这一行。
对于每组测试数据,输出一行,表示相应的n是否是17的倍数。1表示是,0表示否。
34
201
2098765413
1717171717171717171717171717171717171717171717171718
0
1
0
1
0
简单大数问题:
开始以为就直接可以水过,这个代码直接wa了;
#include <cstdio>
#include <cstring>
int main()
{
long long n;
long long sum;
while(scanf("%I64d",&n)&&n!=0)
{
sum=n/10-(n%10*5);
if(sum%17==0)
printf("1\n");
else
printf("0\n");
}
return 0;
}后来就换用java做大数处理;
import java.math.BigInteger;
import java.util.Scanner;
public class nyist664 {
public static void main(String[] args) {
Scanner scanf=new Scanner(System.in);
while(scanf.hasNext())
{
BigInteger sum=scanf.nextBigInteger();
if(sum.equals(BigInteger.ZERO))
break;
BigInteger n = BigInteger.valueOf(5);//把int型换成大整数型
BigInteger m= BigInteger.valueOf(17);
sum=sum.divide(BigInteger.TEN).subtract(sum.mod(BigInteger.TEN).multiply(n));//按照题意,去掉个位数,减去个位数乘以5的值
sum=sum.mod(m);//模17
if(sum.equals(BigInteger.ZERO))
{
System.out.println(1);
}
else
System.out.println(0);
}
}
}
这是按题意这样做,直接就过了;
或者直接按照java大数模17也可以过;
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanf=new Scanner(System.in);
while(scanf.hasNext())
{
BigInteger sum=scanf.nextBigInteger();
if(sum.equals(BigInteger.ZERO))
break;
BigInteger n = BigInteger.valueOf(17);
//sum=sum.divide(BigInteger.TEN)-(sum.mod(BigInteger.TEN).multiply(n));//这里开始写错了
sum=sum.mod(n);
if(sum.equals(BigInteger.ZERO))
{
System.out.println(1);
}
else
System.out.println(0);
}
}
}
后来看到别人用c++过的代码,直接用的整型,感觉整型应该不够啊,但是也过了;
#include<stdio.h>
int main()
{
int i,sum;
char str[105];
while(scanf("%s",str)&&str[0]!='0')
{
sum=0;
for(i=0;str[i]!='\0';i++)
{
sum=sum*10+str[i]-'0';
sum=sum%17;
}
printf("%s\n",sum?"0":"1");
}
return 0;
}这个代码也写的很简洁,效率也很高;湖南省第六届大学生计算机程序设计竞赛---数字整除,布布扣,bubuko.com
标签:acm
原文地址:http://blog.csdn.net/whjkm/article/details/37510301