大一寒假训练三(暴力枚举)【更新完成】

本次训练共12 题,本文附AC代码和题目链接。

本次训练中稍有难度的题:nefu 574 丑数nefu 1644 奶牛碑文
(这两题代码都很短,但是思维过程并不简单)

nefu 8 二倍的问题

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int i,j,t,n,ans,a[20];
    while(cin>>t)
    {
        while(t--)
        {
            n=ans=0;
            while(cin>>a[n]&&a[n])n++;//输入数据a[0]~a[n-1]
            sort(a,a+n);
            for(i=0;i<n;i++)
            {
                for(j=i+1;j<n;j++)
                {if(a[j]==a[i]*2)ans++;}
            }
            printf("%d\n",ans);
        }
    }
    return 0;
}

nefu 105 统计

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n,s,a,i;
    while(scanf("%d",&n)!=-1)
    {
        s=0;
        for(i=1;i<=n;i++)
        {
            scanf("%d",&a);
            if(a<60)s++;
        }
        printf("%d\n",s);
    }
    return 0;
}

nefu 193 字符串统计

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int i,j,n,s;
    char a[101];
    while(scanf("%d",&n)!=-1)
    {
        for(i=1;i<=n;i++)
        {
            scanf("%s",&a);
            s=0;
            for(j=0;j<strlen(a);j++)
            {
                if(a[j]>='0'&&a[j]<='9')
                s++;
            }
            printf("%d\n",s);
        }
    }
    return 0;
}

nefu 572 密码箱

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n,i;
    while(scanf("%d",&n)!=-1)
    {
        for(i=n+1;i<=999;i++)
            printf("%.3d\n",i);//%.3d输出007,012等含前缀0的三位数
    }
    return 0;
}

nefu 573 大乐透
写了6层循环,时间复杂度很大,这题数据小不超时,数据大就别想着用暴力枚举了

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int a[50],k,i1,i2,i3,i4,i5,i6;
    while(scanf("%d",&k)!=-1)
    {
        if(k==0)break;
        for(i1=1;i1<=k;i1++)
        scanf("%d",&a[i1]);
        for(i1=1;i1<=k;i1++)
        {
            for(i2=i1+1;i2<=k;i2++)
            {
                for(i3=i2+1;i3<=k;i3++)
                {
                    for(i4=i3+1;i4<=k;i4++)
                    {
                        for(i5=i4+1;i5<=k;i5++)
                        {
                            for(i6=i5+1;i6<=k;i6++)
                            printf("%d %d %d %d %d %d\n",a[i1],a[i2],a[i3],a[i4],a[i5],a[i6]);
                        }
                    }
                }
            }
        }
    }
    return 0;
}

nefu 574 丑数
这题难点在于丑数的排序,即由最先4个最小的丑数乘以2、3、5、7产生之后的丑数,
关键是怎么产生之后的丑数,并且让之后产生的所有丑数按升序排列,详见注释。

#include <bits/stdc++.h>
#define min4(a,b,c,d) min(min(a,b),min(c,d))
using namespace std;
int n,p2,p3,p5,p7,a[5850];//定义min4(a,b,c,d),找四个数中的最小值
int main()
{
    a[1]=1;p2=p3=p5=p7=1;
    for(int i=2;i<=5842;i++)//打表5842个丑数
    {
        a[i]=min4(a[p2]*2,a[p3]*3,a[p5]*5,a[p7]*7);//a[p2]、a[p3]、a[p5]、a[p7]分别为*2、*3、*5、*7的次数
        if(a[i]%2==0)p2++;//如果选择的最小值a[i]是乘以了2,则*2的丑数下标位置后移一位
        if(a[i]%3==0)p3++;
        if(a[i]%5==0)p5++;
        if(a[i]%7==0)p7++;
    }
    while(cin>>n&&n)
    printf("%d\n",a[n]);
    return 0;
}

nefu 575 矩形
完全被覆盖的矩形,是指被其他所有矩形覆盖的矩形。

#include <bits/stdc++.h>
using namespace std;
struct node
{
    int x1,x2,y1,y2;
}p[1001];
int main()
{    
    int i,j,n;
    while(scanf("%d",&n)!=-1)
    {
        for(i=1;i<=n;i++)
        scanf("%d%d%d%d",&p[i].x1,&p[i].x2,&p[i].y1,&p[i].y2);
        int sum=0;
        for(i=1;i<=n;i++)
        {
            int s=0;
            for(j=1;j<=n;j++)
            {
                if(p[i].x1>=p[j].x1&&p[i].x2<=p[j].x2&&p[i].y1>=p[j].y1&&p[i].y2<=p[j].y2)
                    s++;
            }
            if(s==n)
                sum++;
        }
        printf("%d\n",sum);
    }
    return 0;
}

nefu 1639 抽奖

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int a[10010],i,x,n,s;
    while(scanf("%d",&n)!=-1)
    {
        int flag=0;
        for(i=1;i<=n;i++)
        scanf("%d",&a[i]);
        scanf("%d",&x);
        for(i=1;i<=n;i++)
        {
            if(a[i]==x)
            {
                flag=1;
                printf("%d\n",i);
                break;
            }
        }
        if(flag==0)printf("0\n");
    }
    return 0;
}

nefu 1640 比身高

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int a[1001],i,j,n,s,lsum,rsum;
    while(scanf("%d",&n)!=-1)
    {
        for(i=1;i<=n;i++)
        scanf("%d",&a[i]);
        s=0;
        for(i=1;i<=n;i++)
        {
            lsum=rsum=0;
            for(j=i-1;j>=1;j--)
            {
                if(a[j]>a[i])
                    lsum++;
            }
            for(j=i+1;j<=n;j++)
            {
                if(a[j]>a[i])
                    rsum++;
            }
            if(lsum==rsum)
                s++;
        }
        printf("%d\n",s);
    }
    return 0;
}

nefu 1642 楼层编号

#include <bits/stdc++.h>
using namespace std;
int m,t,i,ans;
bool judge(int n)//若这个房间存在,即这个房间编号不包含数字t,为true
{
    int d;
    while(n)
    {
        d=n%10;
        n=n/10;
        if(d==t)return 0;
    }
    return 1;
}
int main()
{
    cin>>m>>t;
    ans=0;
    for(i=1;i<=m;i++)
    {if(judge(i))ans++;}
    printf("%d\n",ans);
    return 0;
}

nefu 1643 比例简化

#include <bits/stdc++.h>
using namespace std;
int gcd(int a,int b)
{return b?gcd(b,a%b):a;}
int main()
{
    int a,b,i,j,l,ans1,ans2;
    double s1,s2,d,min;
    while(cin>>a>>b>>l)
    {
        min=10000;
        for(i=l;i>=1;i--)
        {
            for(j=l;j>=1;j--)
            {
                if(gcd(i,j)==1)
                {
                    s1=1.0*i/j;
                    s2=1.0*a/b;
                    if(s1>=s2)
                    {
                        d=s1-s2;
                        if(d<min)
                        {
                            min=d;
                            ans1=i;
                            ans2=j;
                        }
                    }
                }
            }
        }
        printf("%d %d\n",ans1,ans2);
    }
    return 0;
}

nefu 1644 奶牛碑文
这题实际上是要你统计每个O字母左边有多少个C字母(假设有c[i]个)以及右边有多少个W字母(假设有w[i]个),则这个O字母可以组成c[i]*w[i]个cow单词,把所有O字母左右两边的c[i]*w[i]累加即可。

#include <bits/stdc++.h>
using namespace std;
long long n,i,k1,k2,ans,c[100010],w[100010];
char str[100010];
int main()
{
    scanf("%lld%s",&n,str);
    k1=k2=ans=0;//k1,k2为临时计数变量
    for(i=0;i<n;i++)
    {
        if(str[i]=='C') k1++;
        c[i]=k1;
    }
    for(i=n-1;i>=0;i--)
    {
        if(str[i]=='W') k2++;
        w[i]=k2;
    }
    for(i=0;i<n;i++)
    {
        if(str[i]=='O')
        ans=ans+c[i]*w[i];
    }
    printf("%lld\n",ans);
    return 0;
}
全部评论

相关推荐

迷茫的大四🐶:那你问他上班之后老实了没
点赞 评论 收藏
分享
emmm别问我为啥上一条帖子隔了两个月我才开始投简历和拿offer,因为我懒😰简单流程如下:周一凌晨改好的简历,然后到处乱投简历;周二接到了三维家的一面通知,临时抱佛脚的背了一些八股;周三上午一面下午通知第二天hr面;周四上午hr面下午拿offer,遂收手支线:在BOSS上顺手投了几个大厂,投字节的时候不小心投城客户端了,结果过了一天HR突然把我简历要走了,还问我能不能整客户端,我直接一口答应(脏面评警告😢)结果在周三下午的时候给我打电话,说前端有空缺实习岗,问我有没有兴趣,然后就跟我约了周四下午一面😰我都没咋准备啊,咩都不会啊😭结果周四下午面完,晚上打电话通知过一面了,赶紧把二面约在下周一下午,留点缓冲时间。逆大天了,我一半的问题都不会,他居然给我过了?运气未免有点好了😥现在正在恶补计网、网安、性能优化的东西(这三大板块我是几乎一点不会,一面几乎一点答不出来,加上我又没怎么背八股,这块被干烂了😵)心得体会与经验:1.&nbsp;我giao怎么这么快就结束了,我还以为要找好久😨2.&nbsp;大厂的面试问题真的和中厂小厂很大不同,比如在三维家我能自己吹水到vue的数据劫持、Proxy代理响应式之类的他们就觉得很不错了,但是在字节你但凡敢提到一下就会追问你细节了,一追问马脚就全漏出来了3.&nbsp;有信心真的很重要,我感觉我能拿中厂offer最重要的就是吹水吹出自信来了,以至于三维家面试反问面试官有哪里还需要改进的时候,他就说很不错了解的很多😦4.&nbsp;理解很重要,我从头到尾真没背过很多八股,不过有一些知识确实是敲过代码验证过,所以面试的时候能吹水吹得出来😇想了解面经啥的可以直接评论区问我,但我可能也说不全,因为我没有记录,而且今天摆了一天感觉记忆快清空了😵下面是故事时间:我暑假刚开始的时候才开始准备八股,印象很深那个时候连什么原型、事件循环、闭包这些名词都没听过,资料也不知道怎么找,就一直零零散散的准备,感觉也只有js稍微背了一下八股,其他很多时候都是靠完全理解和手写熟悉一些机制的,但这样做效率很低,反正准备了一个多星期半个月就开摆了😭结果一摆就摆到了开学,笔记是乱七八糟的,八股是忘光光的,简历是一直没改的,实习也是一直没投过的。直到上周日晚上偶然和师兄聊天,他突然问我“你怎么还不找实习”,那天晚上才幡然醒悟,是时候做点事情了😡然后就按照上面描述的来走了。其实我感觉我从头到尾都没背特别多八股,也没怎么找刷题资料啥的,早期就是翻尚硅谷或者黑马的入门视频从头学起,中期用面试鸭看了一点点题,主要是在学js机制和敲js代码,后期才发现了w3c的面经网站,然后在那里看着学(那个时候已经懒得敲了,因为有些问题与代码感觉不像是给找实习的看的,忒细了点😂)接下来继续准备字节二面吧,虽然几乎没啥可能可以通过,但是万一有奇迹呢?😍😍😍也祝大家能够早日拿到心仪的offer
我的offer呢😡:我已经预见10天后你会发,节孝子启动了
投递三维家等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务