nyoj-647-奮鬥小蝸牛在請客(進位轉換)

來源:互聯網
上載者:User

標籤:

奮鬥小蝸牛在請客時間限制:1000 ms  |  記憶體限制:65535 KB難度:2
描述

一路艱辛一路收穫,成功爬過金字塔的小蝸牛別提多高興了。這不為了向曾經協助他的哥們們表達謝意,蝸牛宴請這些親朋好友。

席間,蝸牛發現老鷹一直愁眉不展。就關切的問下老鷹。老鷹說:“近來,有一道題我一直沒解決,很是鬱悶”。蝸牛說:“說說看,看能不能幫你解決掉,老朋友”。老鷹說:“給一個數,用二進位表達,如果這個數轉化為二進位後小數位超過20位,那麼只要前二十位,其餘的不要”,小蝸牛現在很忙,沒時間協助老鷹。

   親愛的兄弟姐妹們,不知道你能否幫忙解決問題。來試下,加油!!!

輸入
多組測試資料,
每組輸入一個數N(不超double)
輸出
輸出對應的二進位(如果小數部分前20全部為0,則將小數部分視為0,不輸出小數部分,不輸出多餘部分比如:(不輸出1.00100000000000000000而輸出1.001)
範例輸入
11.50.0000010.000000999
範例輸出
11.10.000000000000000000010.00000000000000000001

解題思路:

        可以將小數分為整數和小數兩部分,然後分別轉換成二進位,整數小數都要用數組來儲存轉換資訊,避免越界。

        整數轉換為二進位用到的是輾轉取餘法,而小數轉換為二進位用到的是相乘取整法。

        求小數的整數和小數部分,用(int)求得其整數部分,然後本值減去整數部分即為小數部分。

       注意小數點的輸出條件

代碼

#include<stdio.h>#include<string.h>int zheng[10000];int xiao[25];int main(){int i;double x;int max;double min;int numz,numx;while(scanf("%lf",&x)!=EOF){/*   已知一個小數,求其小數部分和整數部分     則用(int)求其整數部分, 然後本值再減去(int)求小數部分*/ max=(int)x;min=x-max;//整數部分轉換也要用數組,避免越界 if(max==0)    printf("0");else{    numz=1;    while(max)    {    zheng[numz]=max%2;    max/=2;    numz++;    }    for(i=numz-1;i>=1;i--)        printf("%d",zheng[i]);}/*numz=1;do{zheng[numz]=max%2;max/=2;numz++;}while(max!=0);//以後如果轉換進位需要用數組儲存,則用do-while for(i=numz-1;i>=1;i--)    printf("%d",zheng[i]); */       numx=1;while(numx<21&&min){xiao[numx]=(int)(min*2);//min=min*2-xiao[numx];if(min*2>=1)    min=min*2-xiao[numx];else    min*=2;numx++;}for(i=numx-1;i>=1;i--)    if(xiao[i]!=0)        break;//注意i從numx-1開始 numx=i;if(numx!=0)    printf(".");//避免沒小數但是輸出 . for(i=1;i<=numx;i++)    printf("%d",xiao[i]);printf("\n");}return 0;}


著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

nyoj-647-奮鬥小蝸牛在請客(進位轉換)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.