现在的位置: 首页 > 综合 > 正文

hdu 1013 Digital Roots(水题)

2017年11月23日 ⁄ 综合 ⁄ 共 580字 ⁄ 字号 评论关闭

小记:这题,咋一看,真简单,各位数字相加求和,减1对9取余再加一 就是answer。 最开始用int 直接提交,WA,好,想了一下,数字肯定蛮大,long long,提交,WA,尼玛,这是大数据的节奏啊。 getchar一个一个的读。好。AC!

思路:一位一位的读入。

#include <iostream>
#include <cstdio>
using namespace std;

int p[] = {9,1,2,3,4,5,6,7,8};

int main(){
    int n,sum;

    while(1){
        //scanf("%1d",&n);
        bool flag = 0;
        char c;
        int sum = 0;
        c = getchar();
        if(c == '0')break;
        sum += c - '0';
        while((c = getchar()) != '\n'){
            if(!flag){
                if(c == '\n')continue;
                flag = 1;
            }
            sum +=  c - '0';
        }
        //if(flag)break;

        cout<<p[sum%9]<<endl;
    }
    return 0;
}

高效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;
}

抱歉!评论已关闭.