hdu 1013

来源:互联网 发布:公司数据安全管理 编辑:程序博客网 时间:2024/06/03 19:08

http://acm.hdu.edu.cn/showproblem.php?pid=1013


只有0-9的结果 很容易让人往规律题目上面去想

关键是如何去找规律 我一开始没有找对 一个劲的错

 参考了别人代码过了大哭

ans=0 1 2 3 4 5 6 7 8 9 10 11 12 13 ......... 100 101 102 103 ....
roots=0 1 2 3 4 5 6 7 8 9 1 2 3 4 .......1 2 3 4....
原来是以1.....9为循环节的。想想也是,每次增加1,那么层层迭代下来,最终当ans<10的时候也是每次增加了1。如此,可以归纳出
roots=(ans-1)%9+1


#include<stdio.h>

#include<string.h>
int main()
{
    int  sum,n,num,ans,i,d;
    char s[1000];
    while(scanf("%s",s)!=EOF)
    {      
          d=strlen(s);
        /* for(i=0;i<d;)///操 这里 亚   搞错了 干吗i++ 那样不是加了2次吗
             if(s[i]=='0') i++;
              else break;
          if(i==d) break;*/
          ans=0;
          if(d==1&&s[0]=='0')  break;
          if(d==1&&s[0]<'10')  {printf("%c\n",s[0]);continue;}
          for(i=0;i<d;i++)
              ans=ans+s[i]-'0';
          printf("%d\n",(ans-1)%9+1);
           
    }
    return 0;
}

原创粉丝点击