PTA 关于3的倍数的深度思考

在作者写pta的过程中遇到了很多问题,也得到了很多感悟,比如说下面这道题。

给你一个正整数,请你判断它是不是3的倍数?

输入格式:

输入数据有一个T(T<=50),代表有T组数据

对于每组数据,一个整数n (1<=n<=101000) 注意数据范围

这个题需要知道一个数能被3整除的特殊性质,即每一位数字的和能够被3整除,该数字就能被3整除。

输出格式:

对于每组数据,输出一行“YES”或“NO”(不包括引号),代表这个数是或不是3的倍数

输入样例:

在这里给出一组输入。例如:

2
33332
123

输出样例:

在这里给出相应的输出。例如:

NO
YES

作者在写这道题的过程中首先想到的就是通过取余来得到所输入的数各位数字的和,经过在devC++上面的操作也证明了可行性。

#include<stdio.h>
int main()
{
	 int arr[50];
	int a,b,c,d,sum,T;
    scanf("%d",&T);
	for(a=0;a<T;a++)
	{
	scanf("%d",&arr[a]);
	}
	for(b=0;b<T;b++)
	{
        sum=0;
while(arr[b]!=0)
{
    sum=arr[b]%10+sum;
    arr[b]/=10;
}
            if(sum%3==0) printf("YES\n");
        else printf("NO\n");
    }
	
 } 

在pta上面运行测试的结果也一样,但是提交的时候系统却显示了错误,之后作者选择尝试使用字符的方式进行运算

#include<stdio.h>
#include<string.h>
int main()
{
	int T,b,i,j,sum;
	char a[10001];
	scanf("%d",&T);
	for(i=0;i<T;i++)
	{
		sum=0;
		scanf("%s",&a);
		b=strlen(a);
		for(j=0;j<b;j++)
		{
			sum=sum+a[j];
		}
		if(sum%3==0) printf("YES\n");
		else printf("NO\n");
	}
return 0;
 } 

经过尝试之后,成功提交,也希望pta的出题人能够暗示一些答题方向,不然很容易让答题者怀疑人生,比如说作者我

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值