HDU-1013

来源:互联网 发布:淘宝怎么添加客服旺旺 编辑:程序博客网 时间:2024/05/29 16:54

原题点击打开链接

(1).简介极速的AC代码

#include<stdio.h>int main(){    int a,c;    for(;scanf("%1d",&a),a>0;printf("%d\n",--a%9u+1))        while((c=getchar())-48u<10)            a+=c-48;    return 0;}

没有用数组作为中间存储,使得输入的数可以极大。其中:

1.一位数模9是它本身(9除外);整十数模9是它十位的数字(90除外);整百数摸9是它百位的数字(900除外)......

2.对于一个一般的数,可以分拆成几个10的幂的和;一般的数模9的结果,实质就是题目所描述的"数字根"(9的倍数除外).

3.反复提到9的倍数除外,那这个除外的结果是什么?想一下就清楚.所以先--a再%9最后+1就是在处理这种情况。

(2)虽然过样例,但无法AC的代码

#include<stdio.h>long long f(long long n){long long temp=1,k=0,m=0,i;if(n<10) return n;else {while((n/temp)>0){    temp=temp*10;    k++;}    for(i=0;i<=k;i++){      m=m+(n/temp)%10;      temp=temp/10;    }    return f(m);}}int main(void){    long long n;    while(scanf("%I64d",&n)!=EOF&&n){        printf("%I64d\n",f(n));}return 0;}
可能还是可操作的数太小,无法完全通过所有测试样例,而一直WA


原创粉丝点击