信息学奥赛3的倍数c++

描述

我们知道,判断一个正整数是不是3的倍数的方法是:

把正整数各位上的数字求和,如果这个和是3的倍数,那么该正整数就是3的倍数。例如:12345:1+2+3+4+5=15。15是3的倍数,所以12345是3的倍数;

1234:1+2+3+4=10。10不是3的倍数,所以1234不是3的倍数。

给出n个正整数,判断它们是不是3的倍数。

对于每个正整数:如果是,输出Yes;否则,输出No。

输入 (读取文件: mod.in)

输入文件名为mod.in。

输入的一行,包含一个正整数n,表示正整数的个数。

以下n行,每行一个正整数a。

输出 (写入文件: mod.out)

输出文件名为mod.out。

输出共n行,每行输出一个Yes或No,表示第i个数是不是3的倍数。

注意:每行的输出只能是Yes或No,注意大小写,不要有多余的其它字符(包括空格)。

输入样例 1

3
13
120
228
输出样例 1

No
Yes
Yes
提示

【样例说明】

13:1+3=4。因为4不是3的倍数,所以13也不是3的倍数。所以输出No

120:1+2+0=3。因为3是3的倍数,所以120也是3的倍数。所以输出Yes

228:2+2+8=12。因为12是3的倍数,所以228也是3的倍数。所以输出Yes

【数据范围】

对于100%的数据,$1<=n<=1000$。

对于30%的数据,$0<a<=2,000,000,000$;

对于100%的数据,$a的位数不超过255$。

来源

2014山东省小学竞赛试题


#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
using namespace std;
int main(){
    freopen("mod.in","r",stdin);
    freopen("mod.out","w",stdout);
    int q;
    cin>>q;
    long long int n,i,j,len;
    char a[999];
    for(int i1=0;i1<q;i1++){
        cin>>a;
        n=0;
        len=strlen(a);
        for(i=0;i<len;i++){
            n=n+(char)(a[i]-'0');
        }
        if(n%3==0){
            cout<<"Yes"<<endl;
        }else{
            cout<<"No"<<endl;
        }
    }
        
    return 0;
}