1. 程式人生 > >11.10 作業 Problem H: 能被3整除嗎?

11.10 作業 Problem H: 能被3整除嗎?

Description

眾所周知,一個正整數N能夠被3整除當且僅當N的各位數字之和能夠被3整除。如123的各位數字之和是6,而6%3=0,所以123能夠被3整除。現在有若干個正整數,需要程式設計來判斷這些數是否能被3整除。

Input

輸入有多行。第一行是M>0,表示之後有M個正整數需要判斷。

之後有M行,每行是一個正整數N,N<=10100,也就是說,N不超過100位十進位制數字。

Output

輸出有M行。每一行輸出與上述每一行輸入一一對應。

如果對應的正整數能夠被3整除,則輸出“Yes”,否則輸出“No”。

Sample Input

66734711123323111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111134518446744073709551615

Sample Output

YesNoNoNoYesYes

HINT

N太大了,超出了所有整數型別所能儲存的最大範圍,只能考慮使用字串把N儲存下來,逐位處理了。

思路:

同二進位制轉十進位制那道題。

程式碼:

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

int main()

{
    int m,i,j,k,s,sum;
    char str[100000];
    scanf("%d",&m);
    getchar();
    for(i=1; i<=m; i++)
        {
        sum=0;
        gets(str);
        for(k=0; k<strlen(str); k++)
        {
            sum += (str[k]-48);
        }
        if(sum%3==0)
        {
            printf("Yes\n");
        }
        else
        {
            printf("No\n");
        }

        }
    return 0;
}