ZOJ 1154 解题报告

ZOJ 1154 解题报告
利用 大数类非常容易解决,代码如下:
Code
 1#include "BigInteger.h"
 2#include <iostream>
 3#include <cmath>
 4using namespace std;
 5
 6int _tmain(int argc, _TCHAR* argv[])
 7{
 8    int cases;
 9    cin >> cases;
10    while(cases--)
11    {
12        int base;
13        string num;
14        while(cin >> base && base != 0)
15        {
16            cin >> num;
17            BigInteger b(base);
18            BigInteger n(num);
19
20            BigInteger result(0);
21            BigInteger divide(0);
22
23            int length = num.length();
24
25            for(int i = length - 1; i >= 0--i)
26            {
27                result = result + b.Pow(length - 1 - i) * ((int)(num.at(i) - '0'));
28                divide = divide + ((int)(num.at(i) - '0'));
29            }

30
31            const BigInteger zero(0);
32            if(result % divide == zero)
33                cout << "yes" << endl;
34            else
35                cout << "no" << endl;
36        }

37        if(cases > 0)
38            cout << endl;
39    }

40
41    return 0;
42}

43

你可能感兴趣的:(ZOJ 1154 解题报告)