1. 程式人生 > >大數整除(大數mod)

大數整除(大數mod)

Description

定理:把一個至少兩位的正整數的個位數字去掉,再從餘下的數中減去個位數的5倍。當且僅當差是17的倍數時,原數也是17的倍數 。

例如,34是17的倍數,因為3-20=-17是17的倍數;201不是17的倍數,因為20-5=15不是17的倍數。輸入一個正整數n,你的任務是判斷它是否是17的倍數。

Input

輸入檔案最多包含10組測試資料,每個資料佔一行,僅包含一個正整數n(1<=n<=10^100),表示待判斷的正整數。n=0表示輸入結束,你的程式不應當處理這一行。 

Output

對於每組測試資料,輸出一行,表示相應的n是否是17的倍數。1表示是,0表示否。

Sample Input

34
201
2098765413
17171717171717171717171717171717171717171717171717180

Sample Output

1
0
1
0

Hint

大數整除,讓算是否能夠整除17,其實不用減去個位數的5倍,直接判斷即可! 小白本有方法! 第一次遇見,寫一下。

#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#include<math.h>
using namespace std;
int main()
{
    char s[120];
    int a[120], i, con, ans;
    while(scanf("%s",s) && s[0] != '0')
    {
        con = strlen(s);
        for(i = 0; i < con; i++)
            a[i] = s[i] - '0';
        ans = 0;
        for(i = 0; i < con; i++)
            ans = (ans * 10 + a[i]) % 17;
        if(ans)
            printf("0\n");
        else
            printf("1\n");
    }
    return 0;
}


相關推薦

大數整除大數mod

Description 定理:把一個至少兩位的正整數的個位數字去掉,再從餘下的數中減去個位數的5倍。當且僅當差是17的倍數時,原數也是17的倍數 。 例如,34是17的倍數,因為3-20=-17

BZOJ-1012-[JSOI2008]最大數maxnumber線段樹

open can i++ max print fine 每一個 input esc Description   現在請求你維護一個數列,要求提供以下兩種操作:1、 查詢操作。語法:Q L 功能:查詢當前數列中末尾L個數中的最大的數,並輸出這個數的值。限制:L不超過當前數列

2016【極限班培訓】大數尚學堂

mage TE QQ targe 視頻教程 http image 技術 gallery ======================================================= 長期更新IT編程視頻教程,資料收集整理不易,需要一點費用 有意

BZOJ 3110 [Zjoi2013]K大數查詢整體二分

題解 gre void 有關 pre \n str k大數查詢 如果 3110: [Zjoi2013]K大數查詢 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 11654 Solved: 3505[Submit][Sta

C++實現string類型的大數相加帶小數

字符 urn sin 個數 dem 做了 優化 count 變量 近日,做了一道阿裏給的大數相加的編程題。題目大意如下: 輸入兩個string類型的數,如12.223 11,判斷輸入字符串是否合法。合法則輸出true以及相加結果(true 23.223),非法則輸出fal

【模板】大數乘法51nod 1027

() sca strlen ret span har gif long long inline 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #

大數加法包括負數

大數加法 多謝部落格大大的指點 :https://blog.csdn.net/u012773338/article/details/41789401 大數加法,其實就是每個數的加法,C++的程式碼好長啊,不過仔細看還是有規律的,上程式碼 #include<iostream> #in

【BZOJ3110】[ZJOI2013]K大數查詢整體二分

題目: BZOJ3110 分析: 整體二分模板題…… 先明確一下題意:每個位置可以存放多個數,第一種操作是“加入 (insert) ”一個數而不是“加上 (add) ”一個數。 首先考慮只有一次詢問的情況。設詢問的名次為\(k\),我們二分出一個答案\(mid\),然後遍歷所有修改。建立一棵區間線段

大數模板正整數

1 #include <bits/stdc++.h> 2 using namespace std; 3 4 #define MAXN 9999 5 #define MAXSIZE 500 //最大長度 6 #define DLEN 4 7

HDU 1753 大明A+B(大數相加)string::npos

話說,經過了漫長的一個多月,小明已經成長了許多,所以他改了一個名字叫“大明”。 這時他已經不是那個只會做100以內加法的那個“小明”了,現在他甚至會任意長度的正小數的加法。 現在,給你兩個正的小數A和B,你的任務是代表大明計算出A+B的值。 Inpu

RSA與大數運算C語言

  ========================================================================== 前言:此文來自於www.pediy.com一位Cracker---afanty之手。他建立了一個VC++(MFC)版的大

大數計算進階 支援大浮點數的任意精度加減乘除

上一篇實現了大數加法,乘除法都是簡單的複用加法,這樣做時間複雜度高,精度低。進階:1.乘法模擬豎式計算方法 核心思路是num1[i]*num2[j]的結果一定對應乘積中的[i+j]位,並且考慮對[i+j+1]位的進位。    這樣的時間複雜度為O(m*n) 而簡單的複用加法的

倆個大數相乘java實現

package com.example; /** * * @author ZHANGHAOHAO089 * @date 2017/6/27 */ public class BigNumber

HDU 1002 大數加法C語言

A + B Problem II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 340946    Acce

HDU 1047(大數相加)陣列模擬

  這個題目啊,其實紮實的做的話應該並不難,然而我想看是統一用字串,還是再轉化成陣列,然後看了別人的題解,傻冒一樣的像別人一樣謝了getchar();真是傻冒了,我用的scanf("%s",str),

斐波那契的整除思維 & 數論

題目連結 Time Limit:1000ms Memory Limit:65536K Description 已知斐波那契數列有如下遞迴定義,f(1)=1,f(2)=1, 且n>=3,f(n)=f(n-1)+f(n-2),它的前幾項可以表示為1, 1,2

看一個大數能不能被11整除方法

夫妻數學協會(ACM)是一個非營利組織,致力於幫助單身人士找到他/她的另一半。11月11日是“單日”,在這一天,ACM邀請了一大批單身派對。人們聚在一起,與他人聊天,以及與之相匹配的合作伙伴。派對上有N位紳士和女士,每位先生只能和一位女士搭配,反之亦然。為了記住光棍節,ACM

大數據日知錄:架構與算法》讀書筆記多圖

打通 導論 ges wid 技術分享 二次 思維 知識點 很好 第二次讀這本書,這次是精讀,畫了思維導圖。書很好,完整的知識結構和由淺入深的介紹,非常全面以至於知識點都梳理了三天。 作為導論式的總覽,對大數據領域有了個總體的認識,接下來可以更針對性地加強和實踐。 總體上

每天4億行SQLite訂單大數據測試源碼

nal nbsp 數據源 研究 沒有 pan 6.5 rsh 提升性能 SQLite單表4億訂單,大數據測試 SQLite作為嵌入式數據庫的翹楚,廣受歡迎!新生命團隊自2010年以來,投入大量精力對SQLite進行學習研究,成功應用於各系統非致命數據場合。 SQLi

Javascript中的七大數據類型data types

lean new 沖突 控制 字符串 data color class 屬性 JavaScript中的七大數據類型 1、undefined 未定義 1 undefined 2、null 空 1 null 3、boolean 布爾型 1 true; 2