我家博宇生日快乐!!!hdu5504
2015-10-22 20:38
288 查看
今天我的好队友生日,在这里祝她生日快乐,天天开心,么么哒
题目:点击打开链接
题解:
给你n个数,让你从中选任意的大于一个数,使得乘积最大,可能会出现负数,0
整体不难,就是特殊情况要考虑到
1,全为0
2,有且只有一个负数
3,有一个负数,其余全为0
代码:
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstring>
using namespace std;
int main()
{
int t,n,ans,j;
long long int sum;
long long int a[70],b[70];
cin>>t;
while(t--)
{
ans=0;
sum=1;
j=0;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];
if(a[i]<0)
{
b[j++]=a[i];
}
else if(a[i]==0) ++ans;
else sum*=a[i];
}
//printf("j=%d\n",j);
sort(b,b+j);
//for(int i=0;i<j;i++)
//printf("b[%d]=%d\n",i,b[i]);
if(j+ans==n)
{
if(j==0)
{
printf("0\n");
continue;
}
else if(j==1)
{
if(ans)
{
printf("0\n");
continue;
}
else
{
printf("%lld\n",a[0]);
continue;
}
}
}
if(j!=0&&j%2==0)
{
for(int i=0;i<j;i++)
{
sum*=b[i];
}
}
else if(j!=0)
{
for(int i=0;i<j-1;i++)
sum*=b[i];
}
printf("%lld\n",sum);
}
return 0;
}
王阿腾的代码,我改对的
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstring>
using namespace std;
int main()
{
int t,n,ans,j,bb;
long long int sum;
long long int a[70],b[70];
cin>>t;
while(t--)
{
ans=0;
bb=0;
sum=1;
j=0;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];
if(a[i]<0)
{
++ans;
b[j++]=a[i];
}
else if(a[i]==0) bb++;
else sum*=a[i];
}
sort(b,b+j);
if(j==1&&j==n)
{
printf("%d\n",a[0]);
continue;
}
else if(j==1&&n-j==bb)
{
printf("0\n");
continue;
}
else if(bb==n)
{
printf("0\n");
continue;
}
if(ans!=0&&ans%2==0)
{
for(int i=0;i<j;i++)
{
sum*=b[i];
}
}
else if(ans!=0)
{
for(int i=0;i<j-1;i++)
sum*=b[i];
}
printf("%lld\n",sum);
}
return 0;
}
题目:点击打开链接
题解:
给你n个数,让你从中选任意的大于一个数,使得乘积最大,可能会出现负数,0
整体不难,就是特殊情况要考虑到
1,全为0
2,有且只有一个负数
3,有一个负数,其余全为0
代码:
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstring>
using namespace std;
int main()
{
int t,n,ans,j;
long long int sum;
long long int a[70],b[70];
cin>>t;
while(t--)
{
ans=0;
sum=1;
j=0;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];
if(a[i]<0)
{
b[j++]=a[i];
}
else if(a[i]==0) ++ans;
else sum*=a[i];
}
//printf("j=%d\n",j);
sort(b,b+j);
//for(int i=0;i<j;i++)
//printf("b[%d]=%d\n",i,b[i]);
if(j+ans==n)
{
if(j==0)
{
printf("0\n");
continue;
}
else if(j==1)
{
if(ans)
{
printf("0\n");
continue;
}
else
{
printf("%lld\n",a[0]);
continue;
}
}
}
if(j!=0&&j%2==0)
{
for(int i=0;i<j;i++)
{
sum*=b[i];
}
}
else if(j!=0)
{
for(int i=0;i<j-1;i++)
sum*=b[i];
}
printf("%lld\n",sum);
}
return 0;
}
王阿腾的代码,我改对的
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstring>
using namespace std;
int main()
{
int t,n,ans,j,bb;
long long int sum;
long long int a[70],b[70];
cin>>t;
while(t--)
{
ans=0;
bb=0;
sum=1;
j=0;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];
if(a[i]<0)
{
++ans;
b[j++]=a[i];
}
else if(a[i]==0) bb++;
else sum*=a[i];
}
sort(b,b+j);
if(j==1&&j==n)
{
printf("%d\n",a[0]);
continue;
}
else if(j==1&&n-j==bb)
{
printf("0\n");
continue;
}
else if(bb==n)
{
printf("0\n");
continue;
}
if(ans!=0&&ans%2==0)
{
for(int i=0;i<j;i++)
{
sum*=b[i];
}
}
else if(ans!=0)
{
for(int i=0;i<j-1;i++)
sum*=b[i];
}
printf("%lld\n",sum);
}
return 0;
}
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/shy.gif)
相关文章推荐
- Haproxy在大并发下的表现
- iOS开发UI篇—ipad项目 popoverController使用注意
- opencv2-方框滤波boxFilter函数
- Linux Nginx(master-slave)、Apache(woker、prefork) Working Mode Research
- 2015年亚洲区长春站赛后总结
- 数据结构之旅(一)一些基本的概念
- [Leetcode]Triangle
- openfire源码分析---2
- poj3421 一道很无语的题,数据大,数学没学好啊
- vsphere高可用性
- 第七周项目1 建立顺序环形队列算法库
- iOS开发UI篇—ipad 项目 popoverController简单介绍
- Android开源框架Universal-Image-Loader详解
- 小小菜之Cocos2d-x游戏开发旅程——Lua之场景的创建
- undefined function openssl_x509_read
- 国际化
- 群体智能利用:验证码识别
- Java基础(5):封装
- 74 Search a 2D Matrix
- postman app支持浏览器上的cookie