5.2 細菌繁殖

來源:互聯網
上載者:User

問題描述

一種細菌的繁殖速度是每天成倍增長。例如:第一天有 
10個,第二天就變成 
20個,
第三天變成 
40個,第四天變成 
80個,……。現在給出第一天的日期和細菌數目,要你
寫程式求出到某一天的時候,細菌的數目。

輸入資料

第一行有一個整數 
n,表示測試資料的數目。其後 
n行每行有 
5個整數,整數之間
用一個空格隔開。第一個數表示第一天的月份,第二個數表示第一天的日期,第三個數
表示第一天細菌的數目,第四個數表示要求的那一天的月份,第五個數表示要求的那一
天的日期。已知第一天和要求的一天在同一年並且該年不是閏年,要求的一天一定在第
一天之後。資料保證要求的一天的細菌數目在整數範圍內。

輸出要求

對於每一組測試資料,輸出一行,該行包含一個整數,為要求的一天的細菌數。

輸入範例 

1 1 1 1 2 

2 28 10 3 2 

輸出範例 

40 

解題思路

這題實際上是求給定的兩天之間間隔的天數 
n,第一天的細菌數乘以 
2的 
n次方就是題
目的答案。每個月的天數因為不很規則,如果在程式中用規則描述會比較麻煩,所以可以使
用一個數組將每個月的天數存起來。整個計算過程可以描述如下:

讀入測試範例數 
n;

做 
n次:1. 讀入兩個日期及第一天的細菌數; 

2.將兩個日期轉換為當年的第幾天; 
3.得到兩個天數的差,即它們中間間隔的天數 
m; 
4.用第一天的細菌數乘以 
2的 
m次方等到 
x; 
5.輸出 
x; 

代碼如下:

/***Declaration:The author of <<Accelerated C++>> has wrote in the end of that book: As you look for reading materimal, keep in mind that books on the shelf do not make you a better programmer. Ultimately, the only way to improve your programming is to write programs.>這些程式來自一些ACM書籍,作者只為提高編程能力,實現書中例題或練習。如有侵權,請聯絡作者,作者將立即刪除。**聯絡郵箱:mingxinglai#gmail.com**/#include <stdio.h>int main(int argc, char* argv[]){int days[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};int n;scanf("%d", &n);for( int i = 0; i < n; i++){int month_1, day_1, month_2, day_2, num;scanf("%d%d%d%d%d", &month_1, &day_1, &num, &month_2, &day_2);int sum = 0;for( int k = month_1; k < month_2; k++)sum += days[ k - 1 ];sum -= day_1;sum += day_2;int  nNum = num;for(int  k = 0; k < sum; k++)nNum *= 2;printf("%d\n", nNum);}return 0;}

樣本2:(較上面的代碼更為簡潔明了)

#include <stdio.h>int month[]= {0,31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};int main(int argc, char* argv[]){int times;scanf("%d", ×);int mon1, date1, mon2, date2, num;while( times-- ){scanf("%d%d%d%d%d", &mon1, &date1, &num, &mon2, &date2);int days = date2 - date1;for( int i = mon1; i < mon2; i++)days += month[i];long nNum = num;for( int j = 0; j < days; j++)num *= 2;printf("%d\n", num);}return 0;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.