九的余数

九的余数

时间限制: 3000 ms  |  内存限制: 65535 KB
难度: 3
描述

现在给你一个自然数n,它的位数小于等于一百万,现在你要做的就是求出这个数整除九之后的余数。

输入
第一行有一个整数m(1<=m<=8),表示有m组测试数据;
随后m行每行有一个自然数n。
输出
输出n整除九之后的余数,每次输出占一行。
样例输入
3
4
5
465456541
样例输出
4
5
4
来源
[苗栋栋]原创
上传者

苗栋栋


心得:首先,自然数n它的位数小于等于一百万,将这个数用int 型储存,内存自然是小了。用字符串表示既能储存下来,又能节省空间。刚开始我直接用字符串输入,出现了错误,尚未找出(下面我会附出,若有大神知道哪错了,望指点哦),后来改换用字符串数组了。

第二个问题便是,如何求9的余数,此处用到一个结论:一个数除以9的余数等于这个数所有位上的数的和除以9的余数。如12345%9=6,(1+2+3+4+5)%9=6。




代码<C语言>


错误代码:


 #include<stdio.h>
int main()
{
int m,sum=0;
char B;
scanf("%d",&m);//输入测试次数
getchar();
while(m--)
{
sum=0;
while((B=getchar())!='\n')
{
sum+=B-48;//在ascll码中,字符'0'对应int型的48
}
printf("%d\n",sum%9);
}
return 0;
}

正确代码


 #include <stdio.h>
#include <string.h>
#define N 1000010
int main()
{
int n,sum;
scanf("%d", &n);
while(n --){
char a[N];//将自然数以字符串的形式储存,节约空间
sum=0;
scanf("%s", a);
int length = strlen(a);//字符串长度,不包括'\0'
for(int i = 0; i < length; i ++){
a[i] -= '0';相当于a[i] -= 48;
sum+=a[i];
}
printf("%d\n", sum%9);
}

return 0;
}


 

AC情况



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

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值