project euler 16 Power digit sum

来源:互联网 发布:中子星 知乎 编辑:程序博客网 时间:2024/05/29 11:51

题目:

https://projecteuler.net/problem=16

题意:

Power digit sum
Problem 16
215 = 32768 and the sum of its digits is 3 + 2 + 7 + 6 + 8 = 26.
What is the sum of the digits of the number 21000?

21000的数位和

思路:

直接求出21000,然后统计数位和,这里用了万进制来表示大整数

代码:

#include <bits/stdc++.h>using namespace std;typedef long long ll;const int N = 1000 + 10;const int RADIX = 10000;int big_int_pow(int x, int y, int num[])//求x^y,结果到保存在num数组中{                                       //这里要求x、y均小于10000,因为RADIX=10000    int len = 0;    num[len++] = 1;    for(int i = 0; i < y; ++i)    {        int temp = 0;        for(int j = 0; j < len; ++j)        {            temp += x * num[j];            num[j] = temp % RADIX;            temp /= RADIX;        }        if(temp)            num[len++] = temp;    }    reverse(num, num + len);    return len;}int main(){    int num[N];    int len = big_int_pow(2, 1000, num);    int ans = 0;    for(int i = len-1; i >= 0; --i)    {        int temp = num[i];        while(temp)        {            ans += temp % 10;            temp /= 10;        }    }    printf("%d\n", ans);    return 0;}
原创粉丝点击