최고차항의 계수가 0이 아니고 음이 아닌 정수 계수의 다항식 $f(x)=a_nx^n+a_{n-1}x^{n-1}+a_{n-2}x^{n-2}+a_{n-3}x^{n-3}+···+a_1x+a_0$ 이 있다.
$f(1)=a_n+a_{n-1}+···a_1+a_0=a$라 하자.
이때 $a>a_k (0 \leq k \leq n)$ 이 성립한다.
$f(a)=a_na^n+a_{n-1}a^{n-1}+a_{n-2}a^{n-2}+a_{n-3}a^{n-3}+···+a_1a+a_0$에서
$a>a_k$이므로 위 식은 $f(a)$의 값을 a의 지수로 표현한 값이된다.
따라서 $f(a)=a_na_{n-1}a_{n-2} \dotsc a_1a_0(a)$이다.
(f(a)를 a진수로 나타내면 f(x)의 각 계수 $a_n,a_{n-1},a_{n-2}, \dotsc ,a_1,a_0$가 각 자리수가 된다.)
이를 이용하여 음이 아닌 정수 계수의 다항식 $f(x)$를 $f(1),f(f(1))$ 의 값만 안다면 구할 수 있다.
$f(1)=a$로 놓았으므로 10진수 형태의 $f(f(1))$을 a진수로 변환한다.
그렇다면 일의 자리부터 각 자리수는 $a_0,a_{1},a_{2}, \dotsc ,a_{n-1},a_{n}$과 같다.
이때 각 자리수는 a진법에서의 값이므로 0~9는 그대로, A~Z는 10~27로 변환한다.
$a_0,a_{1},a_{2}, \dotsc ,a_{n-1},a_{n}$를 알기때문에 $f(x)$를 구할 수 있다.
ex)
$f(1)=46 , f(f(1))=32647996$ 이라는 값이 주어졌을때 $f(x)$를 구해보자.
$a=46$이므로
$f(f(1))$을 46진수로 나타낸다.
이때는 직접 짠 간단한 C 프로그램을 이용한다.
#include <stdio.h>
void f(int n,int k){
if(n<=0)
return;
f(n/k,k);
if(n%k>=10)
printf("%c",n%k-10+'A');
else
printf("%d",n%k);
}
int main(){
int n,k;
scanf("%d %d",&n,&k);//10진수 n을 k진수로 변환한다.
f(n,k);
}
$f(a)=7DJ52(a)$이다. 알파벳을 숫자로 치환하면 [7, 13, 19, 5, 2]이다.
따라서 $a_4=7, a_3=13, a_2=19, a_1=5, a_0=2$ 이다.
$\therefore f(x)=7x^4+13x^3+19x^2+5x+2$
이렇게 $f(x)$를 구할 수 있다.