• poj1131


    View Code
    1 /*给定一个八进制的小数题目要求你把它转换为十进制小数,转换后小数的位数是转换前八进制小
    数位数的3倍且不输出末尾无意义的零(即后置零).
    我采用的方法是乘10然后对8取整(现在假设将p进制的小数转换为n进制,
    同样采用乘n取整:),每转换一位,都必须从最低位s[len-1]开始至小数的最高位(即小数点后的一位),
    每次计算积 g=a[j]*n+k(其中k为下一位积的进位),本位进位数 k=g/p,积在本位存入
    s[j]=g%p;最后的整数k作为转换的一位存放于转换结果字符串中。*/
    2 #include"iostream"
    3 #include"math.h"
    4 using namespace std;
    5 char ch[100];
    6 int ww[100],pp=0;
    7 int a[100],b[100],c[100],d[100],w[100],R[100],RR[100];
    8 int i ,j,L,t,s;
    9 int main()
    10 {
    11 while(scanf("%s",&ch)!=EOF)
    12 {
    13 pp=0;
    14 memset(c,0,sizeof(c));
    15 memset(a,1,sizeof(a));
    16 memset(w,0,sizeof(w));
    17 memset(R,0,sizeof(R));
    18 L=strlen(ch);
    19 int sign=0;
    20 for(i=0;i<L;i++)
    21 if(ch[i]=='.') { sign=i; break; }
    22 int k=0;
    23 for(i=L-1;i>sign;i--)
    24 a[k++]=ch[i]-'0';
    25
    26 int flag=0;
    27 t=1; c[0]=1;
    28 s=0;
    29 //************求0.125~n*************
    30 for(int p=k-1;p>=0;p--)
    31 {
    32 for(j=0;j<t;j++)
    33 {
    34 int sum=125*c[j]+flag;
    35 c[j]=sum%10;
    36 flag=sum/10;
    37 }
    38 while(flag)
    39 {
    40 c[t++]=flag%10;
    41 flag/=10;
    42 }
    43 int mark=0;
    44 //********************************
    45 for(int q=0;q<t;q++)
    46 {
    47 int mul=a[p]*c[q]+mark;
    48 d[s++]=mul%10;
    49 mark=mul/10;
    50 }
    51
    52 int ii,jj;
    53 for(ii=0;ii<p*3;ii++) //增加0的个数,3表示每乘一次得三位小数
    54 w[ii]=0;
    55
    56 for(jj=0;jj<t;jj++)
    57 w[ii++]=d[jj]; //将所有的数保存在w[]中
    58
    59 s=0;
    60
    61 ww[pp++]=ii; //长度相等
    62 for(i=ii;i<ww[0];i++)
    63 w[i]=0;
    64
    65 int Flag=0;
    66 for(i=0;i<ww[0];i++)
    67 {
    68 int sum=w[i]+R[i]+Flag;
    69 RR[i]=sum%10;
    70 Flag=sum/10;
    71 }
    72 if(Flag==1) RR[i++]=Flag;
    73 for(int xx=0;xx<i;xx++)
    74 R[xx]=RR[xx];
    75 }
    76 printf("%s [8] = ",ch);
    77 printf("0.");
    78 int sign11=0;
    79
    80 for(i=0;i<ww[0];i++)
    81 if(RR[i]!=0) {sign11=i;break;}
    82 for(i=ww[0]-1;i>=sign11;i--)
    83 printf("%d",RR[i]);
    84 printf(" [10]\n");
    85 }
    86 return 0;
    87 }
  • 相关阅读:
    ReactNative: 数据请求
    ReactNative: 使用Geolocation的API获取位置信息
    ReactNative: 使用第三方库图像选择器react-native-image-picker和react-native-image-crop-picker
    MDG_TR_DEST
    【VerySky原创】后台JOB运行-相关表
    【VerySky原创】RPR_ABAP_SOURCE_SCAN
    【VerySky原创】 ME9F
    【VerySky原创】如何查找SNRO编号范围的使用情况;
    【VerySky原创】怎样查找到CDHDR、CDPOS表中的OBJECTCLAS字段
    【由VerySky原创】由Number Range 导致凭证生成但无法保存的问题
  • 原文地址:https://www.cnblogs.com/FCWORLD/p/1972419.html
Copyright © 2020-2023  润新知