加入收藏 | 设为首页 | 会员中心 | 我要投稿 辽源站长网 (https://www.0437zz.com/)- 云专线、云连接、智能数据、边缘计算、数据安全!
当前位置: 首页 > 大数据 > 正文

HHUOJ 1003 数字整除(模拟大数整除)

发布时间:2021-02-02 15:48:57 所属栏目:大数据 来源:网络整理
导读:1003: 数字整除 时间限制: 1 Sec?? 内存限制: 128 MB 提交: 10?? 解决: 7 题目描述 定理:把一个至少两位的正整数的个位数字去掉,再从余下的数中减去个位数的5倍。当且仅当差是17的倍数时,原数也是17的倍数 。 例如,34是17的倍数,因为3-20=-17是17的倍数

1003: 数字整除

时间限制: 1 Sec??内存限制: 128 MB
提交: 10??解决: 7

题目描述

定理:把一个至少两位的正整数的个位数字去掉,再从余下的数中减去个位数的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

提示

来源

湖南省第六届大学生计算机程序设计竞赛


思路:

大数模拟的练习题,因为有很大很大的数所以只能用大数高精度。觉得题意的定理实现起来有点麻烦..所以直接用的大数。我们在进行除法运算的时候,就是从最高位开始,如果不能整数则这位商0,然后这位*10+下一位,再进行除法。如果可以除掉,那么商数余一个余数,然后再不能除就*10,这个题就是模拟的这个过程。

当然如果按照题意也能做,去网上搜了一下用题目定理写的AC代码,也贴到后边了。

代码:

//大数模拟
#include <iostream>  
#include <cstdio>  
#include <cstring>  
#include <cstdlib>  
using namespace std;  
int main()  
{  
    //freopen("in.txt","r",stdin); 
    char s[110];
    while(scanf("%s",s)!=EOF&&strcmp(s,"0")!=0)
    {
    	int len=strlen(s);
    	int re=0;
    	for(int i=0;i<len;i++)
    	{
    		if(re<17)
    		{
    			re=re*10+s[i]-'0';
    		}
    		else 
    		{
    			re=re%17*10+s[i]-'0';
    		}	
    	}
    	if(re%17==0)printf("1n");
    	else printf("0n");
    }
}  


//题意做法
#include<stdio.h>  
#include<string.h>  
  
int main()  
{  
    int i,x,m ;  
    char s[1001] ;  
    while(scanf("%s",s)!=EOF && strcmp(s,"0"))  
    {  
          
        int h=strlen(s) ;  
        x=(s[h-1]-'0')*5 ;  
        h-- ;  
        m=0 ;  
        for(i=0;i<h;i++)  
        {  
            m=s[i]-'0'+m ;  
            if(m<17)  
            {  
                m=m*10 ;  
            }  
            else m=(m%17)*10 ;  
        }  
        if(m/10==x%17)  
            printf("1n") ;  
        else     printf("0n") ;  
    }  
    return 0 ;  
}  

(编辑:辽源站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读