nyoj 九的余数

来源:互联网 发布:汉语有多难 知乎 编辑:程序博客网 时间:2024/04/28 23:23

点击打开链接

思路:每一位相加起来%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;}



原创粉丝点击