問題描述
一種細(xì)菌的繁殖速度是每天成倍增長(zhǎng)柬赐。例如: 第一天有 10 個(gè),第二天就變成 20 個(gè),第三天變成 40 個(gè),第四天變成 80 個(gè),......“锘伲現(xiàn)在給出第一天的日期和細(xì)菌數(shù)目,要你寫程序求出到某一天的時(shí)候,細(xì)菌的數(shù)目源内。
輸入
第一行有一個(gè)整數(shù) n,表示測(cè)試數(shù)據(jù)的數(shù)目靖秩。其后 n 行每行有 5 個(gè)整數(shù),整數(shù)之間用一個(gè)空格隔開蚁袭。第一個(gè)數(shù)表示第一天的月份,第二個(gè)數(shù)表示第一天的日期,第三個(gè)數(shù)表示第一天細(xì)菌的數(shù)目,第四個(gè)數(shù)表示要求的那一天的月份,第五個(gè)數(shù)表示要求的那一天的日期。已知第一天和要求的一天在同一年并且該年不是閏年,要求的一天一定在第一天之后阱当。數(shù)據(jù)保證要求的一天的細(xì)菌數(shù)目在整數(shù)范圍內(nèi)俏扩。
輸出
對(duì)于每一組測(cè)試數(shù)據(jù),輸出一行,該行包含一個(gè)整數(shù),為要求的一天的細(xì)菌數(shù)。
輸入樣列
2
1 1 1 1 2
2 28 10 3 2
輸出樣例
2
40
算法實(shí)現(xiàn)
using System;
namespace Questions{
class Program{
public static void Main(string[] args){
int[] day = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int n = int.Parse(Console.ReadLine());
while (n > 0) {
n--;
string input = Console.ReadLine();
string[] data = input.Split(' ');
int moonStart = int.Parse(data[0]);
int moonEnd = int.Parse(data[3]);
int dayStart = int.Parse(data[1]);
int dayEnd = int.Parse(data[4]);
int num = int.Parse(data[2]);
int daySum = 0;
//計(jì)算天數(shù)daySum
if (moonStart == moonEnd)
daySum = dayEnd - dayStart;
else {
daySum = day[moonStart - 1] - dayStart;
for (int i = moonStart + 1; i < moonEnd; i++)
daySum += day[i - 1];
daySum += dayEnd;
}
Console.WriteLine((Math.Pow(2,daySum)*num));
}
Console.ReadKey();
}
}
}