Fortune Telling

题目名字 Fortune Telling

题目链接

题意

找出为奇数且最大的那一束花,如果没有输出0,有的话输出花瓣数量

思路

  1. 先判断有没有奇数的花,没有输出0
  2. 有的话计算有奇数个数的花为p个,sort函数使从小到大排列,
  3. 如果p为奇数的话,那就sum将p个数组全部加起来输出
  4. 如果不是,就使第一个最小的奇数花瓣数组a[i]为0,然后sum加起来p个数组输出;

坑点

  1. 题目是找出一朵或好几朵花然后组成一束花,并不是只找出一朵花就行

算法一:

代码
#include<iostream>
#include<algorithm>
using namespace std;
int n,a[101],p=0,ans=0;
//n甘菊的数量,a[105]存每朵花花瓣数
//p是花瓣为奇数的花的个数 
int main(){
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
        if(a[i]%2!=0) p++;
		//要统计有几朵是奇数个花瓣 
    }
    if(p==0) cout<<0;
	//如果奇数个数为0显然不可能数到爱 
    if(p%2!=0) 
    {
        for(int i=1;i<=n;i++)
		{
			ans+=a[i];
		}//统计花瓣总数 
        cout<<ans;
    }
    else{
        sort(a+1,a+n+1);
        //使数组中的数字呈递增顺序排序 
        for(int i=1;i<=n;i++)
		{
			if(a[i]%2!=0)
			{
				a[i]=0;
				break;
			}
			//找到第一个奇数值,并将其赋值给p 
		}
		for(int i=1;i<=n;i++)
		{
			ans+=a[i];//统计最大花瓣数 
        	cout<<ans;
   		}
   	}
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值