為避免 TLE,因此先建次方表

下面 value 的計算為 第 i 位數的位數次方 - 第 i 位數的 10 進位值

例如

5 3134

value = 0

value += 3^4 - 3*5^3

value += 1^4 - 1*5^2

value += 3^4 - 3*5^1

value += 4^4 - 4*5^0

 

=> value = 0  所以輸出 YES

 

 

#include <iostream>
#include <cstring>

using namespace std;

int table[11][9];

void set_Exptable(){
    int i, j;

    for(i = 0; i<=10; i++)
        table[i][0] = 1;

    for(i = 0; i<=10; i++)
        for(j = 1; j<9; j++)
            table[i][j] = table[i][j-1] * i;

}

int main()
{
    char num[8], digit;
    int base, value;
    int i;

    set_Exptable();
    while(cin >> base >> num){
        digit = strlen(num);

        for(i = value = 0; i < digit; i++){
            num[i] -= '0';
            value += table[num[i]][digit] - num[i] * table[base][digit-i-1];
        }

        if(value)
            cout << "NO\n";
        else
            cout << "YES\n";

    }
}
 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大神(偽) 的頭像
    大神(偽)

    大神的世界

    大神(偽) 發表在 痞客邦 留言(0) 人氣()