POJ 1519 Digital Roots

来源:互联网 发布:淘宝客不计入销量 编辑:程序博客网 时间:2024/05/21 14:53
   看到这题就想到了大数, 用字符数组做。
#include <stdio.h>#include <string.h>#include <math.h>#include <iostream>#include <algorithm>#define mem(a) memset(a, 0, sizeof(a))using namespace std;char ch1[1005];int len1, num;void digital(){    int i, w = 0;    num = 0;for(i = 0;i < len1;i++){num += (ch1[i] - 48);}mem(ch1);if(num < 10)return;else{while((num / 10) != 0){ch1[w] = num % 10 + 48;num /= 10;w++;}ch1[w] = num + 48;len1 = w + 1;digital();}}int main(){    int i, j, k;    mem(ch1);    while(scanf("%s", &ch1))    {    len1 = strlen(ch1);    if(len1 == 1&&ch1[0] == '0')    break;    if(len1 == 1)    {        printf("%c\n", ch1[0]);        mem(ch1);        continue;    }    digital();    printf("%d\n", num);    mem(ch1);    }    return 0;}

0 0
原创粉丝点击