思路:每一位相加起来%9就可以了
看看数据 不大100万,每个数加起来不超过1000万 直接int 类型保存就可以了;一开始写的,没有仔细分析数据
#include <iostream>
#include <string.h>
using namespace std;
char s[10000001];
int st[10000001];
int numsum(int n)
{
int sum=0;
while(n)
{
sum+=n%10;
n=n/10;
}
if(sum>9) return numsum(sum);
if(sum==9) return 0;
return sum;
}
int changeout(char s[])
{
int len=strlen(s);
int sum(0);
for(int i=0;i<len;i++)
{
sum+=s[i]-'0';
if(sum>10000000)
sum=numsum(sum);
}
sum=numsum(sum);
return sum;
}
int main()
{
int n,t;
cin>>t;
while(t--)
{
cin>>s;
cout<<(changeout(s))<<endl;
}
return 0;
}
来个更简单的~~
#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;
}