西电期末1006.奇偶之和

一.题目

二.分析与思路

本题考察循环和条件判断,有以下几点注意:在奇数偶数数量上,虽然奇数比偶数少一,但是仍然要重新设定一个变量表示,不然m减一的时候,m-1也会减一,导致奇数不够;数列自变量单独设立,在循环内部自增,但不是循环变量;由于没有明确循环变量,建议使用while函数;条件一定是数量都大于0,而不是不等于0,由于奇数偶数数量差一,不一定保证全零,如果出现负数,会进入无限循环!

三.代码实现

#include<bits/stdc++.h>//万能头文件
int f(int n) {
	return 3 * (n - 1) * (n - 1) + 2 * (n - 1) + 1;
}//数列函数
int main()
{
	int m;//偶数个数
	scanf("%d",&m);
	int n = m - 1;//奇数个数
	int odd = 0;//奇数总数
	int even = 0;//偶数总数
	int i = 1;//数列自变量
	while (m > 0 || n > 0) {//当m,n均到达0时,停止循环
		if (f(i) > 100 && f(i) % 2 == 0 && m>0) {//偶数
			even += f(i);
			m--;//找到一个偶数后,数量减1
		}
		else if (f(i) > 100 && f(i) % 2 != 0 && n>0) {//奇数
			odd += f(i);
			n--;//找到一个奇数后,数量减1
		}
		i++;//数列自变量加1,判断下一个数列值
	}
	printf("%d %d",even, odd);
	return 0;
}

四.评价

比较简单的基础题,适合练习。

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值