九的余数
-
描述
-
现在给你一个自然数n,它的位数小于等于一百万,现在你要做的就是求出这个数整除九之后的余数。
-
输入
-
第一行有一个整数m(1<=m<=8),表示有m组测试数据;
随后m行每行有一个自然数n。
输出
- 输出n整除九之后的余数,每次输出占一行。 样例输入
-
3 4 5 465456541
样例输出
-
4 5 4
算法分析:
-
(a*10^b)%9==(a%9)*(10^b%9)%9==(a%9)*1%9==a%9
-
思路:每一位相加起来%9就可以了看看数据 不大100万,每个数加起来不超过1000万 直接int 类型保存就可以了;
-
- #include <iostream>
- #include <cstring>
- #include <cstdio>
- using namespace std;
- char s[1000010];
- int main()
- {
- int t,lens,sum;
- cin>>t;
- while(t--)
- {
- //cin>>s; //输入太慢了
- scanf("%s",&s);
- // lens=strlen(s); //可用可以不用
- sum=0;
- for(int i=0;s[i];i++)
- sum+=s[i]-'0';
- sum%=9;
- cout<<sum<<endl;
- }
- return 0;
- }
-
#include<stdio.h>
#include<string.h>
int main()
{
int s,n,i;
char a[1000001];
scanf("%d",&s);
while(s--)
{
scanf("%s",a);
n=strlen(a);
for(i=0;i<n;++i)
a[i]=a[i]-'0';
for(i=0;i<n-1;++i)
{
while(a[i]!=0)
{
if(a[i]==9)
a[i]=0;
else
{
a[i+1]=(a[i]*10+a[i+1])%9;
a[i]=0;
}
}
}
printf("%c\n",a[n-1]+'0');
}
return 0;
} -
1 #include<stdio.h>
-
2 #include<string.h>
-
3 int main()
-
4 {
-
5 int m,k,i;char a[1000010];int count;
-
6 scanf("%d",&m);
-
7 while(m--)
-
8 {
-
9 count=0;
-
10 scanf("%s",a);
-
11 k=strlen(a);
-
12 for(i=0;i<k;i++)
-
13 count+=a[i]-'0';
-
14 printf("%d\n",count%9);
-
15 }
-
16 return 0;
-
17 }