ZOJ 1059 解题报告

ZOJ 1059 解题报告
利用 大数类简单解决的简单题.
Code
 1#include "BigInteger.h"
 2#include <iostream>
 3#include <vector>
 4#include <string>
 5#include <cmath>
 6#include <iomanip>
 7using namespace std;
 8
 9bool IsCyclic(string input, string result)
10{
11    int length = input.length();
12    int flag[100= {0};
13    for(int i = 0; i < length; ++i)
14    {
15        for(int j = 0; j < length; ++j)
16        {
17            if(!flag[j] && input.at(i) == result.at(j))
18            {
19                flag[j] = 1;
20                break;
21            }

22        }

23    }

24
25    for(int i = 0; i < length; ++i)
26    {
27        if(!flag[i])
28            return false;
29    }

30    return true;
31}

32
33
34int _tmain(int argc, _TCHAR* argv[])
35{
36    string input;
37    while(cin >> input)
38    {
39        int length = input.length();
40        BigInteger integer(input);
41        BigInteger result(1);
42        bool isCyclic = true;
43        for(int i = 2; i < length + 1++i)
44        {
45            result = integer * BigInteger(i);
46            if(!IsCyclic(input, result.GetString()))
47            {
48                isCyclic = false;
49                break;
50            }

51        }

52        if(isCyclic)
53            cout << input << " is cyclic" << endl;
54        else
55            cout << input << " is not cyclic" << endl;
56    }

57    return 0;
58}

59

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