~cpp #include<iostream> using namespace std; int base_return(int n); int exponent(int n,int radix); int change_number(int n,int radix); void main() { cout<<"세 수 를 입력하세요 ."<<endl; int radix; int first_last; int second_number; cin>>radix>>first_last>>second_number; int important=10; int find_number=0; int temp; int base; while(true) { temp=change_number((important+first_last),radix)* change_number(second_number,radix); //radix형태로 입력된 수를 10진수 형태로 바꿔줍니다. base = base_return(important+first_last); if( temp == (first_last * exponent((base-1),radix) + change_number(important/10,radix)))//십진수 형태의 비교 실행..... { find_number=(important + first_last) * second_number; break; } important+=radix; } cout<<"이동 곱셈 속성을 갖는 숫자중 가장 작은 첫번째 숫자의 자리갯수를 출력합니다."; cout<<endl; cout<<base_return(find_number); cout<<endl; } int base_return(int n) { int count=1; while( n>=10) { n/=10; count++; } return count; } int exponent(int n,int radix) { int temp=1; for(int i=0;i<n;i++) temp*=radix; return temp; } int change_number(int n,int radix) { int temp = base_return(n); int* k = new int[temp]; int signi=0; for(int j=temp ; j>0 ; j--) { k[j-1]=n%10; n=n/10; } int c=temp; for(int i=0 ; i<c; i++)//???왜그러지?? { signi+=k[i] * exponent(temp-1,radix); temp--; } return signi; }