暴力水题 不能单单暴力,也要稍微动动脑子的

一句话 减少循环次数

UVA11059 Maximum Product

//A 了的代码
#include<cstdio>
#include<iostream>
#include<stdio.h>
#include<algorithm>
using namespace std;
typedef long long LL;
int a[25];
int main()
{
    int n;
    int kase=0;
    while(cin>>n)
    {
        ++kase;
        for(int i=1;i<=n;++i)
            cin>>a[i];
        LL ans=0;
        for(int i=1;i<=n;++i)//枚举起点
            for(int j=i;j<=n;++j) //枚举终点
        {
            LL tmp=1;
            for(int k=i;k<=j;++k)
            {
                tmp*=a[k];
            }
            ans=max(ans,tmp);
        }
        printf("Case #%d: The maximum product is %lld.\n",kase,ans);
        cout<<endl;
    }
}

U

UVA10976 Fractions Again?

先根据题目找到暴力的边界

#include<iostream>
#include<stdio.h>
#include<vector>
int a[10000],b[10000];
using namespace std;
#define m_p make_pair
vector<pair<int,int> >v;
int main()
{
    int k;
    while(cin>>k)
    {
        v.clear();
        int x,y;
        for(int y=k+1;y<=2*k;++y)
        {
            if(k*y%(y-k)==0)
            {
                x=k*y/(y-k);
                v.push_back(m_p(x,y));

               // printf("1/%d = 1/%d + 1/%d\n",k,x,y);
            }
        }
        int len=v.size();
        printf("%d\n",len);
        for(int i=0;i<len;++i) printf("1/%d = 1/%d + 1/%d\n",k,v[i].first,v[i].second);

        //for(int j=1;j<=i;++j) printf("1/%d = 1/%d + 1/%d\n",k,x,y);
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/iroy33/article/details/88628161