大數取模

小天狼星★發表於2020-09-28

題目 1074: 數字整除

時間限制: 1Sec 記憶體限制: 128MB 提交: 5648 解決: 1584

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

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

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

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

樣例輸入
34
201
2098765413
1717171717171717171717171717171717171717171717171718
0
樣例輸出
1
0
1
0

#include<cstdio>
#include<cstdlib>
#include<cstring>

int main()
{
    int x=0;
    int y=0;
    int k=0;
    char s[105];
    int ans[105];
    while(1)
    {
        x=0;
        scanf("%s",s);
        if(s[0]=='0')
            break;
        int len = strlen(s);
        x = s[0]-'0';
        for(int i=1; i<len; i++)
        {
            x*=10;
            x+=s[i]-'0';
            x%=17;
        }
        if(x==0)
            ans[k]=1;
        else
            ans[k]=0;
        k++;
    }
    //printf("sada\n");
    for(int i=0; i<k; i++)
    {
        printf("%d",ans[i]);
        if(i!=k-1) printf("\n");
    }



    return 0;
}

相關文章