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

2021-07-03 15:07:13 字數 1460 閱讀 6409

時間限制:

1000 ms  |  記憶體限制:

65535 kb

難度:2 描述

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

席間,蝸牛發現老鷹一直愁眉不展。就關切的問下老鷹。老鷹說:「近來,有一道題我一直沒解決,很是鬱悶」。蝸牛說:「說說看,看能不能幫你解決掉,老朋友」。老鷹說:「給乙個數,用二進位制表達,如果這個數轉化為二進位制後小數字超過

20位,那麼只要前二十位,其餘的不要」,小蝸牛現在很忙,沒時間幫助老鷹。

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

輸入

多組測試資料,

每組輸入乙個數n(不超double)

輸出輸出對應的二進位制(如果小數部分前20全部為0,則將小數部分視為0,不輸出小數部分,不輸出多餘部分比如:(不輸出1.00100000000000000000而輸出1.001)

樣例輸入

1

1.50.000001

0.000000999

樣例輸出

1

1.10.00000000000000000001

0.00000000000000000001

解題思路:

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

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

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

注意小數點的輸出條件

**

#include#includeint zheng[10000];

int xiao[25];

int main()

for(i=numz-1;i>=1;i--)

printf("%d",zheng[i]);

} /*

numz=1;

dowhile(max!=0);

//以後如果轉換進製需要用陣列儲存,則用do-while

for(i=numz-1;i>=1;i--)

printf("%d",zheng[i]);

*/

numx=1;

while(numx<21&&min)

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 奮鬥小蝸牛在請客(進製轉換)

時間限制 1000 ms 記憶體限制 65535 kb 難度 2 描寫敘述 一路艱辛一路收穫。成功爬過金字塔的小蝸牛別提多高興了。這不為了向以前幫助他的哥們們表達謝意,蝸牛宴請這些親朋好友。席間。蝸牛發現老鷹一直愁眉不展。就關切的問下老鷹。老鷹說 近來。有一道題我一直沒解決,非常是鬱悶 蝸牛說 說說...

NYOJ 599 奮鬥的小蝸牛

時間限制 1000 ms 記憶體限制 65535 kb難度 1 描述 傳說中能站在金字塔頂的只有兩種動物,一種是鷹,一種是蝸牛。乙隻小蝸牛聽了這個傳說後,大受鼓舞,立志要爬上金字塔。為了實現自己的夢想,蝸牛找到了老鷹,老鷹告訴它金字塔高h公尺,小蝸牛知道乙個白天自己能向上爬10公尺,但由於晚上要休息...

nyoj599奮鬥的小蝸牛

時間限制 1000 ms 記憶體限制 65535 kb 難度 1 描述 傳說中能站在金字塔頂的只有兩種動物,一種是鷹,一種是蝸牛。乙隻小蝸牛聽了這個傳說後,大受鼓舞,立志要爬上金字塔。為了實現自己的夢想,蝸牛找到了老鷹,老鷹告訴它金字塔高h公尺,小蝸牛知道乙個白天自己能向上爬10公尺,但由於晚上要休...