fork download
  1. #include <stdio.h>
  2.  
  3. int main(void) {
  4.  
  5. int num1;//原進位制
  6. scanf("%d",&num1);
  7.  
  8. int a;//數字有幾個
  9. scanf("%d",&a);
  10.  
  11. //依序將原數字存入陣列中
  12. int arr[a];
  13. for(int i=1;i<=a;i++){
  14. scanf("%d", &arr[i]);
  15. }
  16.  
  17.  
  18. int num2;//目標進位制
  19. scanf("%d",&num2);
  20.  
  21. //最後數字
  22. long final;
  23. final=0;
  24.  
  25. //2轉10
  26. if((num1==2)&&(num2==10)){
  27. for(int j =1;j<=a;j++){
  28. final=final+arr[j]*pow(2,a-j);
  29. }
  30. }
  31.  
  32. //8轉10
  33. if((num1==8)&&(num2==10)){
  34. for(int j =1;j<=a;j++){
  35. final=final+arr[j]*pow(8,a-j);
  36. }
  37. }
  38.  
  39. //10轉8或10轉2
  40. if(((num1==10)&&(num2==8))||((num1==10)&&(num2==2))){
  41.  
  42. //原進位制之數字(合併)
  43. int orginal;
  44. orginal=0;
  45.  
  46. int temp;
  47.  
  48. //將分散在各行的10進制的數字合併
  49. for(int i=1;i<=a;i++){
  50. int j=a-i;
  51. temp=1;
  52. while(j>0){
  53. temp=temp*10;
  54. j=j-1;
  55. }
  56. orginal=orginal+arr[i]*temp;
  57. }
  58.  
  59.  
  60. //取餘數
  61.  
  62. int count=0;//計算位數
  63.  
  64. while(orginal !=0){
  65. final=final+(orginal%num2)*pow(10,count);
  66. orginal=orginal/num2;
  67. count=count+1;
  68. }
  69.  
  70. }
  71.  
  72.  
  73. //8轉2(先轉10再轉2)
  74. if((num1==8)&&(num2==2)){
  75.  
  76. int orginal;
  77. orginal=0;
  78.  
  79. //先轉為10進位
  80. for(int j =1;j<=a;j++){
  81. orginal=orginal+arr[j]*pow(8,a-j);
  82. }
  83.  
  84.  
  85. //取餘數
  86. int count=0;//計算位數
  87.  
  88. while(orginal !=0){
  89. final=final+(orginal%num2)*pow(10,count);
  90. orginal=orginal/num2;
  91. count=count+1;
  92. }
  93.  
  94. }
  95.  
  96. //2轉8(先轉10再轉8)
  97. if((num1==2)&&(num2==8)){
  98.  
  99. int orginal;
  100. orginal=0;
  101.  
  102. for(int j =1;j<=a;j++){
  103. orginal=orginal+arr[j]*pow(2,a-j);
  104. }
  105.  
  106.  
  107. //取餘數
  108. int count=0;//計算位數
  109.  
  110. while(orginal !=0){
  111. final=final+(orginal%num2)*pow(10,count);
  112. orginal=orginal/num2;
  113. count=count+1;
  114. }
  115.  
  116. }
  117.  
  118.  
  119. long m=final;
  120. int n=0;
  121. while (m!=0){
  122. m=m/10;
  123. n=n+1;
  124. }
  125.  
  126. int o=final;
  127.  
  128. for (int k= n-1;k>=0;k--){
  129. o=final/pow(10,k);
  130. printf("%d\n", o);
  131. final=final-o*pow(10,k);
  132.  
  133. }
  134.  
  135.  
  136. return 0;
  137. }
  138.  
  139.  
Success #stdin #stdout 0s 4360KB
stdin
10
4
1
0
2
4
2
stdout
1
0
0
0
0
0
0
0
0
0
0