【上機(jī)】模擬賽題(三)

拉到最下面可以看到題解哦!


A.找畫筆

時(shí)間:1s 空間:128MB

題目描述

豆豆對(duì)數(shù)字的執(zhí)著,讓他在理科領(lǐng)域游刃有余,但他近乎瘋狂的投入也使父母有些擔(dān)心,為了讓孩子能夠全面發(fā)展,決定拓寬他的學(xué)習(xí)領(lǐng)域。正好家旁邊有個(gè)繪畫培訓(xùn)中心就給豆豆報(bào)了名,學(xué)習(xí)繪畫的第一天就讓豆豆產(chǎn)生了濃厚的興趣,還主動(dòng)要求買了很多很多的畫筆,畫筆有多種顏色,豆豆有一個(gè)習(xí)慣就是同種顏色的畫筆就買兩支,一支備用,就這樣總共攢了 N 支畫筆( N 是偶數(shù)且 1 < N < 10^6 )。
可是數(shù)字的敏感無孔不入,豆豆腦里蹦出了一個(gè)奇怪的問題:如果蒙上眼任意拿走一支畫筆,分析剩下的N-1支畫筆找出拿走了哪種顏色,你能回答他嗎?

輸入格式

第一行:一個(gè)整數(shù)表示剩下的畫筆個(gè)數(shù)就是題目描述中的 N-1
第二行:N-1個(gè)用空格隔開的正整數(shù) A_i ( 1 <= A_i < 2^{2^5-1} ),表示剩下的畫筆的顏色編號(hào)

輸出格式

一行一個(gè)整數(shù)P,表示拿走的畫筆的顏色編號(hào)

樣例數(shù)據(jù)

【輸入】

9
1 1 9 11 5 3 11 5 9

【輸出】

3

B.三角形個(gè)數(shù)

時(shí)間:1s 空間:128MB

題目描述

小圓點(diǎn)拉著太陽的胡須,在天空中晃來晃去,好不痛快。
可是,他手一松,“啪”從空中摔了下來,一下子摔到地上,有兩條射線被小圓點(diǎn)扯掉下來啦。
“這怎么辦呢?”小圓點(diǎn)對(duì)躺在地上的兩條射線說。
“不要緊,我們請(qǐng)圓規(guī)大叔幫忙,讓他把兩條射線接起來?!边@時(shí),大鉛筆博士出現(xiàn)了,笑瞇瞇地指著身后高高個(gè)子,戴一頂小黑帽子的圓規(guī)說。
圓規(guī)大叔彎了彎腰說:“能倒能,不過,連起來就不見得是一條直線了?!?br> “那是怎么回事呢?”小圓點(diǎn)問。
“我們來試一下就知道了?!眻A規(guī)大叔邊說邊拉起了兩條射線,把它們連在一起,結(jié)果呢?就連成了一個(gè)角!
現(xiàn)給出n個(gè)角的度數(shù),從中選出度數(shù)各不相同的三個(gè)角來組成一個(gè)三角形,問一共有多少種選法?

輸入格式

第一行:一個(gè)整數(shù)n(3 <= n <= 200000)。
第二行:n個(gè)空格隔開的整數(shù)ai(0 < ai < 180),表示每個(gè)角的度數(shù)。

輸出格式

只有一個(gè)整數(shù),表示能組成度數(shù)各不相同的三角形的選法總數(shù)。

樣例數(shù)據(jù)

【輸入】

5
20 20 30 130 140

【輸出】

2

數(shù)據(jù)規(guī)模與約定

30%的數(shù)據(jù):n≤20
50%的數(shù)據(jù):n≤100
80%的數(shù)據(jù):n≤5000
100%的數(shù)據(jù):n≤200000


C.寶箱密碼

題目描述

海盜王將自己的寶藏藏在了一個(gè)寶箱里,只有一次開鎖的機(jī)會(huì),密碼輸錯(cuò)寶箱就會(huì)永久鎖死。
小明意外的得到了這個(gè)寶箱,經(jīng)過詳細(xì)的研究,他發(fā)現(xiàn)海盜王很喜歡數(shù)字129,并且在圖書館里找到了海盜王的一段手稿,上面有一段描述:“那些除不完的數(shù),就是我喜歡的”,然后是一大串包含數(shù)字的字符串。于是,小明大膽的猜測,從字符串中提煉所有的數(shù)字串,所有數(shù)字串對(duì)129求余,將這些余數(shù)加起來,就是寶箱的密碼。
編寫程序,輸入一個(gè)字符串,提取里面所有的完整數(shù)字串,對(duì)129求余,將所有的余數(shù)累加起來輸出。

輸入格式

一行包含多個(gè)數(shù)字串的字符串(可能有空格)

輸出格式

數(shù)字串對(duì)129求余,余數(shù)相加的結(jié)果

樣例數(shù)據(jù)

【輸入1】

Love me, love my dog, 54321and678

【輸出1】

45

【樣例1說明】
54321%129=12, 678%129=33, 結(jié)果為45。
【輸入2】

hello, 00054321 , my phone is 9910。

【輸出2】

118

【樣例2說明】
54321%129=12,9910%129=106,結(jié)果為118
前面的0對(duì)結(jié)果沒有用

數(shù)據(jù)規(guī)模與約定

40%的數(shù)據(jù),字符串里的完整數(shù)字串長度<=9位
60%的數(shù)據(jù),字符串里的完整數(shù)字串長度<=19位
100%的數(shù)據(jù),字符串里的完整數(shù)字串長度<=30位


D.走迷宮

時(shí)間:1s 空間:128MB

題目描述

一個(gè)迷宮,每次可按上左下右任一方向移動(dòng)一個(gè)格子,每個(gè)格子最多經(jīng)過1次(對(duì)同一條路徑來說),有些格子被障礙物擋住了不能到達(dá)。
請(qǐng)你編程輸出從給定起點(diǎn)到終點(diǎn)的最短距離(既路徑上經(jīng)過的格子個(gè)數(shù)),如果到達(dá)不了就輸出-1。

輸入格式

第一行三個(gè)正整數(shù):n m分別表示迷宮的行和列,k表示障礙點(diǎn)個(gè)數(shù)
第二行四個(gè)正整數(shù):起點(diǎn)坐標(biāo)sx sy和終點(diǎn)坐標(biāo)fx fy
接下來k行的數(shù)據(jù),每行兩個(gè)數(shù)表示障礙物所在的行列坐標(biāo)

輸出格式

一個(gè)正整數(shù),表示最短距離
如果沒有一條可行的路則輸出-1

樣例數(shù)據(jù)

【輸入】

5 6 8
1 1 5 6
1 2
1 3
1 5
3 1
3 2
3 6
4 6
5 4

【輸出】

9

數(shù)據(jù)規(guī)模與約定

1<=n, m <= 700


建議先自己做再看題解哦!
建議先自己做再看題解哦!
建議先自己做再看題解哦!
建議先自己做再看題解哦!
建議先自己做再看題解哦!
建議先自己做再看題解哦!
建議先自己做再看題解哦!
建議先自己做再看題解哦!
建議先自己做再看題解哦!
建議先自己做再看題解哦!


A.找畫筆

【分析】

根據(jù)a \; xor \; a=0,0 \; xor \; a=a。所以就是將所有數(shù)進(jìn)行加法運(yùn)算。

【代碼】

#include<bits/stdc++.h>
using namespace std;
const int N=2e5+5,BIG=(1<<31)-1,SMALL=-(1<<31);

int main()
{
    int a,b,c,d,e,f;
    cin>>a>>b;
    for(int i=1; i<a; i++)
    {
        cin>>c;
        b=b^c;
    }
    cout<<b<<endl;
    return 0;
}

B.三角形個(gè)數(shù)

【代碼】

#include<bits/stdc++.h>
using namespace std;
const int N=2e5+5,BIG=(1<<31)-1,SMALL=-(1<<31);
int a[N],n;
long long tong[180],tot;//定義一個(gè)桶

int main()
{
    cin>>n;
    for(int i=1; i<=n; i++)
    {
        cin>>a[i];
        tong[a[i]]++;
    }
    for(int i=1; i<=60; i++)
        for(int j=i+1; j<=90; j++)
        {
            int k=180-i-j;
            if(j<k)//判斷是否相同
                tot+=tong[i]*tong[j]*tong[k];//乘法原理
        }
    cout<<tot;
    return 0;
}

C.寶箱密碼

【代碼】

#include<bits/stdc++.h>
using namespace std;
const int N=2e5+5,BIG=(1<<31)-1,SMALL=-(1<<31);

int main()
{
    string s;
    int l,sum=0,n;
    getline(cin,s);//注意整行讀入
    s=" "+s+" ";//前后加空格
    l=s.size();//取總長
    for(int i=0; i<l; i++)
    {
        if('0'<=s[i]&&s[i]<='9')//判斷是不是數(shù)字
        {
            if('0'>s[i-1]||s[i-1]>'9')//新的數(shù)字開始
                n=s[i]-'0';
            else
                n=(n*10+s[i]-'0')%129;//每讀一位就取余
        }
        else if('0'<=s[i-1]&&s[i-1]<='9')//如果不是數(shù)字并且前一個(gè)是數(shù)字那么這個(gè)數(shù)字讀入完畢
            sum+=n;//累加
    }
    cout<<sum<<endl;
    return 0;
}

D.走迷宮

【分析】

隊(duì)列queue

【代碼】

#include<bits/stdc++.h>
using namespace std;
const int N=7e2+5,he=180,BIG=(1<<31)-1,SMALL=-(1<<31);
bool a[N][N],p[N][N];
//a是原地圖,p是判斷是否計(jì)算過這個(gè)點(diǎn)
int n,m;
int dir[4][2]= {{-1,0},{1,0},{0,-1},{0,1}};//四個(gè)方向

struct node//隊(duì)列
{
    int x,y;
    int step;
};
queue < node > b;
void bfs(int x1,int y1,int x2,int y2)
{
    p[x1][y1]=1;
    node nmnm;
    nmnm.step=0,nmnm.x=x1,nmnm.y=y1;
    b.push(nmnm);
    while(!b.empty())
    {
        nmnm=b.front();//取
        b.pop();//彈出
        if(nmnm.x==x2&&nmnm.y==y2)//判斷終點(diǎn)
        {
            cout<<nmnm.step<<endl;
            exit(0);//退出程序
        }
        for(int i=0; i<4; i++)
        {
            int nx=nmnm.x+dir[i][0];//目標(biāo)位置
            int ny=nmnm.y+dir[i][1];
            if(nx>0&&nx<=n&&ny>0&&ny<=m&&p[nx][ny]==0&&a[nx][ny]==0)
            {//越界&&計(jì)算過&&能走
                node nmnm1;
                p[nx][ny]=1;
                nmnm1.x=nx;
                nmnm1.y=ny;
                nmnm1.step=nmnm.step+1;
                b.push(nmnm1);//存入
            }
        }
    }
    cout<<-1<<endl;//錯(cuò)誤
}
int main()
{
    int c,d,e,f,g,x1,y1;
    cin>>n>>m>>c>>d>>e>>f>>g;
    for(int i=1; i<=c; i++)
    {
        cin>>x1>>y1;
        a[x1][y1]=1;
    }
    bfs(d,e,f,g);
    return 0;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容