HDU2964: Prime Bases
简单题,直接计算进制就好了。
1 #include <iostream> 2 #include <string> 3 #include <cstring> 4 5 using namespace std; 6 7 int prime[]={2,3,5,7,11,13,17,19,23,29,31,37,39,41,43,47,51,53,57,59}; 8 int last, base[20]; 9 10 void DecPrime(int num){ 11 memset(base, 0, sizeof(base)); 12 13 int n = num, i=0; 14 while(n>=1){ 15 base[i] = n % prime[i]; 16 n /= prime[i++]; 17 } 18 last = i-1; 19 } 20 21 void OutPut(int num){ 22 cout << num << " = "; 23 for(int i=0; i<20; i++){ 24 if(base[i]){ 25 cout << base[i]; 26 for(int j=0; j<i; j++){ 27 cout << "*" <<prime[j]; 28 } 29 if(i==last) 30 cout << endl; 31 else 32 cout <<" + "; 33 } 34 35 } 36 } 37 38 int main(int argc, char *argv[]) 39 { 40 int n; 41 42 while(cin >>n && n){ 43 44 DecPrime(n); 45 OutPut(n); 46 47 } 48 49 return 0; 50 }