c++练习1

1.德尔塔毒株的传播速度很快,XX国感染人数猛增致大量企业停工。我们假设德尔塔毒株的繁殖速度是每天成倍增长。
例如:第一天有10个,第二天就变成20个,第三天变成40个,第四天变成80个,……。
现在给出第一天的日期和细菌数目,要你写程序求出到某一天的时候,细菌的数目。

Input
第一行有一个整数n,表示测试数据的数目。其后n行每行有5个整数,整数之间用一个空格隔开。
第一个数表示第一天的月份,第二个数表示第一天的日期,第三个数表示第一天细菌的数目,
第四个数表示要求的那一天的月份,第五个数表示

要求的那一天的日期。
已知第一天和要求的一天在同一年并且该年不是闰年,要求的一天一定在第一天之后。数据保证要求的一天的细菌数目在整数范围内。

【题解】

#include<bits/stdc++.h>
#include<cmath>
using namespace std;
const int Max = 1e3;

//求日期
//求指数 
int s[12] = {31,28,31,30,31,30,31,31,30,31,30,31};

int main(){
	int n;                 //组数
	cin>>n;
	int m1[Max], d1[Max], m2[Max], d2[Max];
	long data1[Max];
	for(int i = 0; i < n; i ++)	 {
		int sum = 0;
		long data;          //每一组求得的结果
		cin>>m1[i]>>d1[i]>>data1[i]>>m2[i]>>d2[i];
		if(m1[i] == m2[i]){
			sum = d2[i] - d1[i];
		}
		else if((m1[i] + 1) == m2[i]){
			sum = s[m1[i] - 1] - d1[i] + d2[i];
		}
		else{
			for(int j = m1[i] - 1; j < m2[i] - 1; j ++){
				sum += s[j];
			}
			sum = sum - d1[i] + d2[i];
		}	
		//cout<<sum<<endl;
		data = data1[i]*pow(2,sum);//把求得的时间差用来计算细菌增长结果
		cout<<data<<endl;
	}
	return 0;//1 1 1 1 1 29
}

2.猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将第一天剩下的桃子吃掉一半,有多吃了一个。
//以后每天早上都吃了前一天剩下的一半零一个。到第 10 天早上想再吃时,发现只剩下一个桃子了。编写程序求猴子第一天摘了多少个桃子。

【题解】本题重点是反过来思考问题

#include <stdio.h>
int main()
{
    int day, x1, x2;    /*定义 day、x1、x2 3 个变量为基本整型*/
    day = 9;
    x2 = 1;
    while(day > 0)//while 语句由后向前推出第一天摘的桃子数。 
    {
        x1 = (x2 + 1) * 2;    /*第一天的桃子数是第二天桃子数加1后的2倍*/
        x2 = x1;
        day--;    /*因为从后向前推所以天数递减*/
    }
    printf("the total is %d\n", x1);    /* 输出桃子的总数*/
    return 0;
}
#include<stdio.h>
 
//返回第n天时的桃子数
int func(int n)
{
	if (n >= 10)
	{
		return 1;
	}
	else
	{
		return (func(n + 1) + 1) * 2;//  当天桃子数 = (后一天桃子数 + 1)* 2; 
	}
}
 
int main()
{
	int i;
	for (i = 1; i <= 10; i++)
	{
		printf("第 %d 天桃子数:%d \n", i, func(i));
	}
	
	getchar();
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值